doc*_*doc 6 c++ inheritance assignment-operator
例:
class C
{
public:
void operator =(int i) {}
};
class SubC : public C
{
};
Run Code Online (Sandbox Code Playgroud)
以下是编译错误:
SubC subC;
subC = 0;
Run Code Online (Sandbox Code Playgroud)
"'subC = 0'中的'operator ='不匹配"
一些消息来源声明这是因为赋值运算符不是继承的.但是,这不仅仅是因为默认构造的复制分配SubC
掩盖了它们吗?
Vau*_*ato 11
复制赋值运算符在派生类中自动生成.由于C++的常规名称隐藏规则,这会导致基类的赋值运算符被隐藏.您可以通过"using"指令取消隐藏基类中的名称.例如:
class C
{
public:
void operator =(int i) {}
};
class SubC : public C
{
public:
using C::operator=;
};
Run Code Online (Sandbox Code Playgroud)