operator 는 상속되지 않는다
그래서 다음과 같은 에러를 벹는다
class ttt
{
public :
void operator=(int a) {
std::cout << "ttttt "<< a << std::endl;
}
};
class ddd : public ttt
{
public :
};
int main()
{
ddd d1;
d1.operator=(10);
오류 C2664 'ddd &ddd::operator =(ddd &&)': 인수 1을(를) 'int'에서 'const ddd &'(으)로 변환할 수 없습니
그런데 c++ 11 에서부터 생성자를 상속 받을 수 있는 상속생성자 using 을 제공하는데
이때 operator 또한 상속 받을 수 있게 지원해준다
class ttt
{
public :
void operator=(int a) {
std::cout << "ttttt "<< a << std::endl;
}
};
class ddd : public ttt
{
public :
using ttt::operator=;
};
int main()
{
ddd d1;
d1.operator=(10);
return 0;
}
좀 더 자세한 using 은 http://3dmpengines.tistory.com/1606 상속 생성자를 참고..
반응형
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
shared_ptr 순환 참조의 문제 weak_ptr (0) | 2016.07.17 |
---|---|
가변 템플릿 typename... T (0) | 2016.07.07 |
상속생성자(Inheriting Constructor) (0) | 2016.07.04 |
using 과 typedef , typedef 보다는 using (0) | 2016.07.04 |
[C++] final 키워드( 선언시, 상속제어 등 ) sealed 한정자 (1) | 2016.07.04 |