第三十五节 C++ 抽象基类和纯虚函数
#include <iostream>
using namespace std;

/* 抽象基类:不能被实例化的基类。 它仅仅只有一个用途,用来派生出其他类。
 * 1. 要定义抽象基类,可使用纯虚函数,纯虚函数可当做接口使用
 * 2. 基类的纯虚函数,在派生类中必须实现。 虚函数可以不用必须实现
 */

/*定义抽象基类*/
class BaseClass {
public:
	//虚函数=0,这个形式为纯虚函数, 告诉编译器,必须在派生类中进行实现
	virtual void debugFun() = 0;  //可看成派生类的接口,调用此接口时,调用相应派生类的方法
};

/*实例化对象时,将创建两个对象,子对象和基类对象,通过从调用的构造函数可以看出*/
class SonClass : public BaseClass {
public:
	void debugFun() { cout << "this is SonClass" << endl; } //若不实现此函数,编译将会出错
	SonClass() { cout << "SonClass constructor" << endl; }
	~SonClass() { cout << "~SonClass deconstructor" << endl; }
};

class Son2Class : public BaseClass {
public:
	void debugFun() { cout << "this is Son2Class" << endl; } //若不实现此函数,编译将会出错
	Son2Class() { cout << "Son2Class constructor" << endl; }
	~Son2Class() { cout << "~Son2Class deconstructor" << endl; }
};

void BaseInput(BaseClass& Base) {
	Base.debugFun();
}

int main()
{
	//BaseClass Base;  //去掉注释,编译出错,抽象基类不可实例化对象。
	SonClass Son; //实例化对象
	Son2Class Son2; //实例化对象

	/*传入哪个对象,调用哪个对象的方法*/
	BaseInput(Son); 
	BaseInput(Son2);

	return 0;
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dddd0216/article/details/79959267
个人分类: C++
所属专栏: C++基础
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

第三十五节 C++ 抽象基类和纯虚函数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭