c – 为什么无法从派生类对象访问父类的赋值运算符

前端之家收集整理的这篇文章主要介绍了c – 为什么无法从派生类对象访问父类的赋值运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
例:
class C
{
  public:
    void operator =(int i) {}
};

class SubC : public C
{
};

以下是编译错误

SubC subC;
subC = 0;

“’subC = 0’中的’operator =’不匹配”

一些消息来源声明这是因为赋值运算符不是继承的.但这不仅仅是因为SubC的默认构造拷贝分配掩盖了它们吗?

解决方法

复制赋值运算符在派生类中自动生成.由于C的常规名称隐藏规则,这会导致基类的赋值运算符被隐藏.您可以通过“using”指令取消隐藏基类中的名称.例如:
class C
{
  public:
    void operator =(int i) {}
};

class SubC : public C
{
  public:
    using C::operator=;
};

猜你在找的C&C++相关文章