首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关C++中虚函数调用的有关问题

2012-03-09 
有关C++中虚函数调用的问题为什么调用虚函数必须通过使用基类对象的引用或指针绑定到派生类对象才能实现动

有关C++中虚函数调用的问题
为什么调用虚函数必须通过使用基类对象的引用或指针绑定到派生类对象才能实现动态调用函数呢?而直接用基类对象绑定派生对象再进行虚函数调用就是编译期间决定函数调用呢?希望各位给予指点,多谢~~

[解决办法]
虚函数是动态绑定的基础,虚函数是非静态的成员函数,虚函数经过派生之后,在类族中就可以实现运行过程中的多态。
根据赋值兼容性规则,可以使用派生类的对象代替基类对象。如果用基类类型的指针指向派生类对象,就可以通过这个指针来访问该对象,问题是访问到的知识从基类继承来同名成员。
解决这一问题的办法是:如果需要通过基类的指针指向派生类的对象,并访问某个与基类同名的成员(如果是函数,其原型完全相同),那么首先在基类中将这个同名函数声明为虚函数。这样通过基类类型的指针,就可以使属于不同派生类的不同对象产生不同的行为,从而实现了运行过程的多态。

一般虚函数成员的定义语法是:
virtual 函数类型 函数名(形参表)
{
函数体
}

[解决办法]
规定!C++就这么实现多态的。
用基类对象直接绑定派生类,怎么绑?这又不是java/C#。
[解决办法]
基类的对象和子类的对象大小不一样,子类的对象比较大。
用子类的对象赋值给基类的对象时,会发生切片现象,即子类比基类多的地方会丢失。
详细看thinking in c++

热点排行