C++中的virtual关键字是什么?怎么用?

如题所述

第1个回答  2020-03-26
Virtual是C++
OO机制中很重要的一个关键字,在类Base中加了Virtual关键字的函数就是虚拟函数。
关键字Virtual的用法:
#include<iostream>
using
namespace
std;
class
A{
public:
virtual
void
display(){
cout<<"A"<<endl;
}
};
class
B
:
public
A{
public:
void
display(){
cout<<"B"<<endl;
}
};
void
doDisplay(A
*p)
{
p->display();
delete
p;
}
int
main(int
argc,char*
argv[])
{
doDisplay(new
B());
return
0;
}
这段代码打印出的结果为B,但是当把A类中的virtual去掉之后打印出的就为A。当基类中没有virtual的时候,编译器在编译的时候把p看做A类的对象,调用的自然就是A类的方法。
但是加上virtual之后,将dispaly方法变成了虚方法,这样调用的时候编译器会看调用的究竟是谁的实例化对象,这样就实现了多态的效果。
也就是说,当基类的派生类中有重写过基类的虚方法的时候,使用基类的指针指向派生类的对象,调用这个方法实际上调用的会是派生类最后实现的方法。
扩展资料:
关于C++的隐藏规则:
1、如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
2、如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
相似回答
大家正在搜