C++虚函数,纯虚函数和抽象类

本文介绍了C++中的虚函数和纯虚函数,详细阐述了虚函数的作用和使用注意事项,包括只能用于非静态成员函数、不适用于构造函数等。接着讲解了纯虚函数,指出纯虚函数使得类成为抽象类,子类必须重写纯虚函数才能实例化。文中还提供了一个代码示例来演示如何使用虚函数和纯虚函数。
摘要由CSDN通过智能技术生成

在说纯虚函数之前我们先说说虚函数,所谓的虚函数便是指当出现基类与派生类的同名操作时,需要给父类的函数标记上virtual,使之具有多态性。

语法:virtual 函数返回值类型 函数名(形参列表){函数实现}

此时要注意几个点:

1、虚函数是针对于非静态成员函数,因为静态成员函数属于类,是不能通过对象名访问的

2、对于类的构造函数也不能使用虚函数

3、虚函数是终身制的,父类使用virtual后,子类的同名函数不管加不加virtual,都是虚函数,一般建议大家加上

4、要多态调用虚函数,必须要有父类的指针或引用指向子类的对象

简单说完了虚函数,下面我们来说纯虚函数:

因为在父类中的虚函数的实现往往都是没有意义的,一般都是调用子类重写的函数,因此可以将虚函数改为纯虚函数
语法:virtual 返回值类型 函数名 (形参列表)=0;
当一个类只要有一个纯虚函数,这个类都称之为抽象类,同时如果大家把父类写为了抽象类但是又没有在子类中重写父类的虚函数的时候,此时子类也是一个抽象类,因为子类继承了父类的纯虚函数,相应的也就成了抽象类。

抽象类里的纯虚函数是可以有实现代码的,需要写在类的声明体外面。
抽象类的特点:
1、无法实例化对象
2、子类必须重写父类的纯虚函数,否则也无法实例化对象
 

#include <iostream>
using namespace std;

class father
{
public:
    virtual void func()=0;
};

class son1:public father
{
public:
    void func()
    {
        cout<<"son1-void func()"<<endl;
    }
};
void test01()
{
   //father f1;   //此时父类是无法实例化对象的
    father *f=new son1;
    f->func();
}
int main()
{
    test01();
    cout << "Hello world!" << endl;
    return 0;
}

原理还是一样的virtual指针,大家有疑问的可以参考之前的文章---------多态基本概念。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值