虚函数、多态 相关 ,简单例子
看c++教程中,总少不了的一块。
虚函数,动态绑定相关,测试代码如下:
class Bbb
{
public:
int m;
public:
Bbb() :m(8){};
/*virtual*/ ~Bbb()
{
cout << "de bbb" << endl;
}
virtual void pp() /*= 0;*/
{
cout << "bbbb:" << m << endl;
}
private:
};
class Dd : public Bbb
{
public:
int m;
public:
Dd() :m(9){};
~Dd()
{
cout << "de ddd" << endl;
}
virtual void pp()
{
cout <<"dddd:"<< m << endl;
}
};
void funtt(Bbb &iv)
{
cout << "ffff:" << iv.m << endl;
iv.pp();
}
int _tmain(int argc, _TCHAR* argv[])
{
Bbb *pB;
pB = new Dd();
delete pB;
Dd * pdd;
pdd = new Dd();
delete pdd;
{
Dd dd;
int isssizedd = sizeof(dd);
cout << "main:" << dd.m << endl;
funtt(dd);
}
}
输出结果如下:
//de bbb
//de ddd
//de bbb
//main:9
//ffff:8
//dddd:9
//de ddd
//de bbb
如果基类中的那个虚函数定义为纯虚的话,输出结果不变。
有一点加强下记忆的是,多态时候 那个虚函数调用的属性值是指针静态类型的值,对应测试输出语句是“//ffff:8”。
对于基类对象和派生类对象直接转换什么的,得再专门看下。。