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

被折叠的 条评论
为什么被折叠?



