代码如下:
#include <iostream>
using namespacestd ;
class A{
public:
void display(){cout << "A class" << endl ;}
} ;
class B:public A{
public:
void displayB(){cout << "B class" << endl ;}
} ;
int main(){
A a ;
((B*)&a)->displayB() ;
return 0 ;
}
屏幕输出B class
照理说,只是进行了指针的转换,内存中并不是真实存在B类对象的,为什么只是转换了指针类型之后就可以调用成功呢?
请大神帮忙解释一下。
LZ 试试这个代码就可以知道了. 同样可以执行成功.
只是因为你的B::displayB函数太简单了, 没有使用任何的类成员.
若是class B里面定义一个 成员x, 然后displayB输出这个x, 那么强制转换之后才会出现错误.
本回答被提问者采纳1、当父类中声明某个函数为虚函数,并且子类得载了这个虚函数以后,用父类对象的指针可以调用子类的相应函数,但前提是该指针指向的对象是子类的对象,否则没有意义。
2、例程:
#include <iostream>