cvirtual属性

钟逸 52 2024-03-23 05:54:03

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

virtual是定义C++中虚函数的关键字。

1、virtual关键字的作用:

c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用。由此可见,virtual主要功能是实现动态绑定。

2、virtual关键字的使用情况:

virtual可用来定义类函数和应用到虚继承。

友元函数构造函数 static静态函数不能用virtual关键字修饰;

普通成员函数和析构函数可以用virtual关键字修饰。

3、virtual关键字的效果:

class GrandFather//祖父类

{

public:

GrandFather(){}//构造函数

virtual void fun()//虚函数声明定义

{

cout<<"GrandFather call function!"<< endl;

}

};

class Father: public GrandFather//父类,公有继承祖父类

{

public:

Father(){}//构造函数

void fun()//fun函数声明定义

{

cout<<"Father call function!"<< endl;

}

};

class Son: public Father//子类,公有继承父类

{

public:

Son(){}//构造函数

void fun()//fun函数声明定义

{

cout<<"Son call function!"<< endl;

}

};

void print(GrandFather* father)//输出函数,祖父类形参

{

father->fun();//调用fun函数

}

int _tmain(int argc, _TCHAR* argv[])

{

Father* pfather= new Son;//建立一个父类的指针让它指向子类

pfather->fun();

GrandFather* pgfather= new Father;

print(pgfather);//祖父类指针变量

return 0;}

4、virtual的继承性:

只要基函数定义了virtual,继承类的该函数也就具有virtual属性;即 GrandFather, Father,Son同时定义virtual void fun()与GrandFather一个定义virtual void fun效果是一样的。

扩展资料

vitual关键字的用途:

1、vitual基类

在多重继承中,从派生类到基类存在多条路线时(多个继承脉络或者途径),一个这种派生类的对象实例化将包含多个基类对象,浪费资源且调用混乱的现象出现。

因此引入了vitual baseclass,来在运行阶段克服多个基类对象的产生。这个vitual是在运行阶段保证对象唯一性的。

2.vitual函数

虚函数的出现,是由于基类的指针可以执行派生类,因此引出了不便,引入vitual函数,来告诉编译器,出现这种情况时,在运行时动态链接进行处理。

3.vitual在纯虚函数中使用

纯虚函数完全是为了继承体系的完整,也是集成vitual函数的作用而产生的。代表了编译器阶段对象的绑定,将调用选择转移到运行时动态绑定。

综上:vitual关键的引入,可以理解为阻止编译阶段的静态绑定,将绑定(虚函数)和约束工作(虚基类)转移到运行时动态处理。

参考资料:百度百科——virtual

上一篇:梦幻西游手游锤子染色
下一篇:真三国7猛将传吕布武器
相关文章
返回顶部小火箭