class A
{
int Avalue;
A& operator=(A& copyMe)
{
Avalue = copyMe.Avalue;
return *this;
}
}
class B:public A
{
int Bvalue;
B& operator=(B& copyMe)
{
Bvalue = copyMe.Bvalue
return *this;
}
}
如何从B的赋值运算符调用A或基类赋值运算符?。如何从赋值运算符调用中处理A的返回引用。
答案 0 :(得分:2)
所有操作符都可以被认为是一些聪明的函数,但这只是编译器的礼貌,它足够聪明地推断出给定的操作数是什么并将它们传递给你的覆盖。这是一种很好的可扩展方法,可以在有意义的情况下添加好的语法糖,但是由于它们通常的用法,人们不能真正看到它是有效的,但是当你观察到覆盖的定义时,它们看起来像功能并且表现得像功能。因此,只需使用范围运算符::
即可访问A接口的公共部分。
A::operator=(copyMe)
请注意,您缺少多个分号,并且类默认为private
访问权限。要访问A中的复制赋值运算符,您需要将其指定为public:
class A
{
private:
int Avalue;
public:
A& operator=(A& copyMe)
{
Avalue = copyMe.Avalue;
return *this;
}
}
答案 1 :(得分:1)
使用范围运算符显式调用赋值运算符(或任何其他函数): A :: operator =(someval);
答案 2 :(得分:0)
您只需在派生的op中添加A::operator=(copyMe)
即可。此外,副本应为非const 引用。