class A{
public:
A& operator += (const A&) {return *this;};
A& operator = (const A&) {return *this;};
};
class B:public A{
public:
B(){};
virtual ~B(){};
};
int main(){
A a;
B b;
b +=a;
b = a; //invalid
return 0;
}
为什么 b += a;可以编译通过,但是b = a不行呢 ??
因为operator =很特殊,即使你没有写,compiler也要生产一个,所以已经有一个类型为
B& operator B(const B&)的函数在哪里了。