// 边写边想
// 探究子类对象赋给父类对象
#include <iostream>using namespace std;
class A
{
public :
int a;
int b;
};
class B : public A
{
public :
int a;
int b;
void func()
{
A::a = 100;//对继承部分的操控,通过域名的方式,也只能是在类中可以进行
A::b = 200;
}
};
int main(void)
{
cout << sizeof (A) << endl;
cout << sizeof(B) << endl;
// 这两行代码说明了,,A 中的两个数据成员和B中两个数据成员是没有关系的
A a;
B b;
a = b;
cout << a.a << endl << a.b << endl;
b.func();
a = b;
cout << a.a << endl << a.b << endl;
// 这两个的比较还是很强烈的比较的,
/*
可以看出,子类对父类的赋值实际就是子类对象中继承自父类的部分赋值给父类对象!!
仔细想想,这样的赋值,,好像也只是单纯的对数据成员有效用,仿佛和成员函数没有啥子关系似的!
我们的确是可以在子类中对继承自父类的数据成员进行修改,而,,父类的成员函数呢??好像不能
对之作出什么修改吧,,
所以,,
对于子类对父类对象的赋值只是更数据成员有关系 ,
还有就是权限的交接!!
*/
// b.(A::a)a= 1000; // 通过域名的方式企图对子类中继承之父类的成员操作,在子类的外面是不行的!!必须在类中
return 0;
}
/*
看到一个词“截断” ,修饰子类对父类对象的赋值是非常好的!
即,子类的新成员对象在向父类对象赋值的时候被截断了!只剩下父类成员!!
*/
// 很乐意将写代码时候的所想分享出来,很开心!