读书人

基类的虚函数声明起个什么作用?解决办

发布时间: 2012-02-28 13:06:35 作者: rapoo

基类的虚函数声明起个什么作用?
反正也没有功能
跟子类直接声明一个同名的函数有什么区别?


[解决办法]
比如一个display()函数,派生类中的功能相似,如果你不用虚函数,那么你每父 子类必须写一个不同名的函数实现,如果同名那么肯定得是虚的了,然后不同类对象对此函数的调用肯定有麻烦了。所以我认为他应该属于一个为了更好的管理,维护程序而出来的机制吧。
[解决办法]
就是多态
例如:
多态是类继承的问题,是同一个函数不同的行为特征。当在类里的函数声明为virtual时便具有了多态的性质。如下:
calss A
{
public:
bool fun(){cout < < "A " < <endl;};
.....
}
class B:public A
{
public:
bool fun(){cout < < "B " < <endl;};
.....
}


GF(A& exm)
{
exm.fun();
}

int main()
{
A a;
B b;
GF(a);
GF(b);
return 0;
}
输出:A
A
如果把A的fun()声明为virtual
输出:A
B

读书人网 >C++

热点推荐