**********c++*************|看程序写结果,谁对给谁,尽量不要去试验,最好说出为什么
#include <stdio.h>
class B
{
public:
virtual B* clone()
{
printf( "b::clone\n ");
return this;
}
virtual void print()
{
printf( "b::print\n ");
}
}b,*pb = NULL;
class D:public B{
public :
virtual D* clone(){
printf( "d::clone\n ");
return this;
}
virtual void print(int x = 0)
{
printf( "d::print\n ");
}
}d,*pd;
void main()
{
pb = &b;
pb-> clone();
pb-> print();
pb = &d;
pb-> clone();
pb-> print();
}
[解决办法]
b::clone
b::print
d::clone
b::print
?
类和结构体应该没有区别吧
[解决办法]
呵呵 对于print函数, 根本就没有动态联编
也就没有应用多态
因为两个print函数不一样
一个没有参数一个有参数
是两个不同的函数
pb-> print();没有多态可用, 就用d的了
我这样理解的