gpt4 book ai didi

c++ - 为什么不能从派生类对象访问父类的赋值运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:04 27 4
gpt4 key购买 nike

例子:

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++ - 为什么不能从派生类对象访问父类的赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com