1,直接用基类指针引用基类对象 2,直接用派生类指针引用派生类对象 3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)4,用...
问题一:因为new出的对象是B,所以该对象虚函数表中fun未被D中的fun覆盖,于是" fun in B"问题二:因为pd1指针是指向D的,所以调用b1,是去D的公共函数区调用,于是“ fun in D"问题三:m_d1是数据,pd1按照D的方式去取B对象的数据,而B没有这个数据,于是访问未知地址,得到乱码 问题四:同...
上面的例子我称为“反多态”,因为,通过一个多态的指针(多态时是父类型的指针,上面的例子是子类型的指针)访问普通成员函数时访问的是子类的函数(刚好和多态相反),通过子类的指针访问虚函数时访问的是父类的函数(也刚好和多态相反)。
问题一:因为new出的对象是B,所以该对象虚函数表中fun未被D中的fun覆盖,于是" fun in B"问题二:因为pd1指针是指向D的,所以调用b1,是去D的公共函数区调用,于是“ fun in D"问题三:m_d1是数据,pd1按照D的方式去取B对象的数据,而B没有这个数据,于是访问未知地址,得到乱码 问题四:同...