티스토리 뷰
overloading: 이름만 같은 함수, 매개변수는 다르다
overriding: 완전히 같은 함수를 재작성
overloading은 함수 오버로딩, 생성자 오버로딩, 연산자 오버로딩 등 다양한 overloading이 있지만
연산자 오버로딩을 다뤄보려고 한다..
원래의 +는 int나 float를 더하는 기능만 있다면
overloading을 통해서 행렬과 행렬을 더하는 기능으로도 확장할 수 있다.
Matrix operator+(Matrix &another){
return Matrix(nums[0] + another.nums[0],
nums[1] + another.nums[1],
nums[2] + another.nums[2],
nums[3] + another.nums[3]);
}
전위증감과 후위증감...
https://sexycoder.tistory.com/11
내 코드
// 전위 증가
Matrix& operator++(){
nums[0] += 1;
nums[1] += 1;
nums[2] += 1;
nums[3] += 1;
return *this;
}
// 후위 증가
const Matrix operator++(int){
const Matrix temp(nums[0], nums[1], nums[2], nums[3]);
nums[0] += 1;
nums[1] += 1;
nums[2] += 1;
nums[3] += 1;
return temp;
}
overloading에 대해서 더 알아보자면,
소멸자는 overloading이 불가능하다. 한 클래스 내에서 소멸자는 오직 하나만 존재한다.
overriding
파생 클래스에서 기본 클래스의 존재감을 상실시키고, 오버라이딩 한 함수가 호출 되도록 동적 바인딩 해준다. 함수 재정의라고도 부른다.
overriding시 파생 클래스에서는 'virtual' 생략 가능하다.
default parameter
매개 변수 앞에 선언될 수 없다. 끝 쪽에 몰려서 선언되어야 한다!
void calc(int a, int b=5, int c=0, int d=0);
virtual function
함수 앞에 virtual 키워드가 있으면, 동적 바인딩을 지시한다. 컴파일러에게 함수에 대한 호출 바인딩을 실행 시간까지 미루도록 지시한다.
abstract class(추상 클래스)
온전한 클래스가 아니므로 객체 생성이 불가능하다. 포인터는 선언 가능.
상속에서 기본 클래스 역할을 하기 위해서 사용된다.
'PL > C++' 카테고리의 다른 글
[C++] Inheritance(상속) (0) | 2021.12.15 |
---|---|
[C++] static 멤버 사용하기 (0) | 2021.12.15 |
[C++] namespace 사용하기 (0) | 2021.11.05 |
[C++] cin, cout, namespace, string (0) | 2021.09.30 |
[C++] struct, 조건 컴파일 (0) | 2021.09.20 |