文章目录
纯虚函数
- 基类声明不定义,派生类根据需求定义
- 为各个派生类提供了公共界面
形式:virtual XXX =0;
具有纯虚函数的类称为抽象类,抽象类的性质如下:
- 不能实例化对象
- 不能做函数返回值
- 不能做函数形参
- 可以定义类指针
- 可以声明类引用
派生类继承抽象类怎么转换成非抽象类
#include <iostream>
class Parent
{
public:
virtual void fun1() = 0;
virtual void fun2() = 0;
};
class Child :public Parent
{
public:
// 1. 在派生类中对纯虚函数重新声明
void fun1();
void fun2();
};
// 2. 提供纯虚函数的定义
void Child::fun1(){
}
void Child::fun2(){
}
抽象类在多继承中的应用
class Interface1
{
public:
virtual void print() = 0;
virtual int add(int a, int b) = 0;
};
class Interface2
{
public:
virtual void print() = 0;
virtual int add(int a, int b) = 0;
virtual int minus(int a, int b) = 0;
};
class Parent
{
public:
int a;
};
class Child :public Interface1, public Interface2, public Parent
{
public:
void print()
{
cout << "chlid cout" << endl;
}
int add(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
};
int main()
{
Child c;
c.print();
cout << c.add(3, 5) << endl;
cout << c.minus(4, 6) << endl;
Interface1* p1 = &c;
Interface2* p2 = &c;
cout << p1->add(7, 8) << endl;
cout << p2->add(7, 8) << endl;
return 0;
}