正文
c语言纯虚函数怎么创建 纯虚函数怎么调用
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
纯虚函数的定义
纯虚函数是一种特殊的虚函数,它的一般格式如下:
class 类名
{
virtual 类型函数名(参数表)=0;
…
};
在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。
一般而言纯虚函数的函数体是缺省的,但是也可以给出纯虚函数的函数体(此时纯虚函数变为虚函数),这一点经常被人们忽视,调用纯虚函数的方法为baseclass::virtual function.
c++里定义纯虚函数
你概念有点混淆了,这个virtual void fun()=0; 是纯虚函数;virtual void fun(); 是虚函数。它们是有区别的。有纯虚函数的类一般都是虚基类,主要用于继承,让子类来实现虚函数。虚函数的作用当然是多态了~~
class base
{
public:
void base::fun() {cout"Base"endl;}
};
class D:public base
{
public:
virtual void fun() {cout"D"endl;}
};
class C:public base
{
public:
virtual void fun() {base::fun();}
};
main()
{
base* c1=new c;
c1-fun() ;
return 0;
} 如果fun 是虚函数显示什么,不是虚函数显示什么?自己试试
C++中虚函数的作用是什么?它应该怎么用呢?
C++中虚函数c语言纯虚函数怎么创建的作用:
1、为c语言纯虚函数怎么创建了方便使用多态特性c语言纯虚函数怎么创建,我们常常需要在基类中定义虚拟函数。
2、在很多情况下c语言纯虚函数怎么创建,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。
为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。
同时含有纯虚拟函数的类称为抽象类,它不能生成对象。这样就很好地解决了上述两个问题。
C++中虚函数的用法:
比如你有个游戏,游戏里有个虚基类叫「怪物」,有纯虚函数 「攻击」。然后派生出了三个子类「狼」「蜘蛛」「蟒蛇」,都实现了自己不同的「攻击」函数,比如狼是咬人,蜘蛛是吐丝,蟒蛇把你缠起来。
然后出现好多怪物的时候就可以定义一个 虚基类指针数组,把各种怪物的指针给它,然后迭代循环的时候直接 monster[i]-attack() 攻击玩家就行了,大概见下图:
扩展资料:
使用虚函数的注意事项:
一、包含虚函数的类指针列表会增大。
二、虚析构函数
析构函数的作用是在对象撤销之前做必要的“清理现场”的工作。当派生类的对象从内存中撤销的时候,会先先调用派生类的析构函数然后再调用基类的析构函数。
当我们new一个临时对象时,若基类中包含析构函数,并且定义了一个指向该基类的指针变量。
三、构造函数不能声明为虚函数
构造函数不能声明为虚函数。如果声明为虚函数,编译器会自动报出。
四、不在析构或者构造过程中调用虚函数
在析构函数或者是构造函数中,我们绝对不能调用虚函数。即使,我们在构造函数或者析构函数中调用虚函数,也不会下降至派生类中调用函数。
在c++中有没有纯虚构造函数?在c++中纯虚析构函数的作用是什么
可以有。
在某些类里声明纯虚析构函数很方便。纯虚函数将产生抽象类——不能实例化的类(即不能创建此类型的对象)。有些时候,你想使一个类成为抽象类,但刚好又没有任何纯虚函数。怎么办?方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。
这里是一个例子:
class awov {
public:
virtual ~awov() = 0; // 声明一个纯虚析构函数
};
这个类有一个纯虚函数,所以它是抽象的,而且它有一个虚析构函数,所以不会产生析构函数问题。但这里还有一件事:必须提供纯虚析构函数的定义:
awov::~awov() {} // 纯虚析构函数的定义
这个定义是必需的,因为虚析构函数工作的方式是:最底层的派生类的析构函数最先被调用,然后各个基类的析构函数被调用。这就是说,即使是抽象类,编译器也要产生对~awov的调用,所以要保证为它提供函数体。如果不这么做,链接器就会检测出来,最后还是得回去把它添上。
c语言纯虚函数怎么创建的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于纯虚函数怎么调用、c语言纯虚函数怎么创建的信息别忘了在本站进行查找喔。