class A
{
public:
int a;
A& operator=(const B& b);
};
class B : public A
{
public:
int a;
int b;
};
A& A::operator=(const B& b)
{
this->a = b.a;
return *this;
}
void main()
{
A a;
a.a = 100;
B b;
b.a = 200;
b.b = 300;
A& c = a;
A& d = b; //这是找不回d.a, d.b的值了,乱掉了
a = d; //编译通过
a = b; //运行通不过,除非重定义=操作符
int cccccc = 1;
}
{
public:
int a;
A& operator=(const B& b);
};
class B : public A
{
public:
int a;
int b;
};
A& A::operator=(const B& b)
{
this->a = b.a;
return *this;
}
void main()
{
A a;
a.a = 100;
B b;
b.a = 200;
b.b = 300;
A& c = a;
A& d = b; //这是找不回d.a, d.b的值了,乱掉了
a = d; //编译通过
a = b; //运行通不过,除非重定义=操作符
int cccccc = 1;
}