34 CPP类多态-纯虚函数和抽象类

本文详细介绍了C++中纯虚函数和抽象类的概念,通过实例展示了如何在基类中定义虚函数,并在派生类中实现多态。重点讲解了构造函数和析构函数的特殊处理,以及VS和g++编译器间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

34 CPP类多态-纯虚函数和抽象类

 

 

#include "iostream"
using namespace std;
class AA
{
public:
    AA() { cout << "调用了基类的构造函数AA()" << endl; }
    // virtual void func() = 0 { cout << "调用了基类的func()" << endl; }  // VS中可以
    // virtual ~AA() = 0 { cout << "调用了基类的析构函数~AA()" << endl; } // VS中可以
    virtual void func() = 0;
    virtual ~AA() = 0; //纯虚析构必须要有实现,VS可以采用上面的实现,g++不行,得采用类外实现
};
AA::~AA()
{
    cout << "调用了基类的析构函数~AA()" << endl;
}

class BB : public AA
{
public:
    BB() { cout << "调用了派生类的构造函数BB()" << endl; }
    void func() { cout << "调用了派生类的func" << endl; }
    ~BB() { cout << "调用了派生类的析构函数~BB" << endl; }
};
void test()
{
    BB b;
    AA &a = b;
    b.func();
}
int main()
{
    test();
    return 0;
}
/* 调用了基类的构造函数AA()
调用了派生类的构造函数BB()
调用了派生类的func
调用了派生类的析构函数~BB
调用了基类的析构函数~AA() */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值