关于C++的运行时类信息的疑问?

来源:百度知道 编辑:UC知道 时间:2024/06/09 04:33:20
1.请问大家c++中 2个对象在什么样的情况下可以互相赋值

2.对象的关系:比如2个对象是父子的关系 或者 兄弟类关系.

3.2个对象中有指针数据类型,可以互相赋值吗?(个人感觉如果2个对象有都含有指针类型,好象不能够互赋值)

3.如果满足互相赋值的情况下:
疑问:兄弟类互相赋值 特别难理解其中的
都是重载或者覆盖父类的函数
这些函数怎么对接起来 转换
被转换后的类到底调用哪个函数
4.当子类向父亲类转换时
疑问1: 会丢失数据吗?
疑问2: 如果父类有虚函数,是怎样转换的。

2个对象中有指针数据类型,可以互相赋值吗?
答案是可以的
不仅两个对象里的指针成员可以相互赋值,就连对象本身也可以;

兄弟类互相赋值:如果单说的是赋值,比如说类A和类B都是继承C的;

A a=B b;这样是不行的
但是这样可以 A *a=new A(); B *b=new B(); a=(A *)b;
这样可以,我测试下面这种情况;在父亲类里面定义虚函数,分别在2个子类重载这个函数,执行a=(A *)b;后,再用a调用这个函数,竟然是调用B里面的哪个函数.

当子类向父亲类转换时 当然会丢失数据
如果父亲类有虚函数,就会转而调用虚函数

父亲类F在内存中的数据结构为 F

那么子类S在内存中的数据结构为 F S

注意父亲类转换成子类也是错误的

其实象这样的题目,最好的老师是编译器

50分