关于多态
#include <iostream.h>
#include <string.h>
class B
{
public:
virtual void print()
{
cout <<" ....Bprint..."<<endl;
}
};
class P1:public B
{
public:
void print()
{
cout<<"...P1print..."<<endl;
}
};
class P2:public B
{
public:
void print()
{
cout<<"....P2print..."<<endl;
}
};
int main()
{
B a;
P1 b;
P2 c;
a.print();
a=b;
a.print();
a=c;
a.print();
return 1;
}
输出为
...Bprint....
...Bprint....
...Bprint....
为什么实现不了多态呢?
-----------------------
如果把main函数中的内容改为
B *a=new B;
P1 b;
p2 c;
a->print();
a=&b;
a->print();
a=&c;
a->print();
输出就为
...Bprint....
...P1print....
...P2print....
还有在上面为什么要B *a=new B;
直接B *a会报错:segmentation fault
如果print不是虚函数,就没有这个错误
这是为什么呢
我用的g++