怎么做 代刷网站,商丘百度推广电话,小程序开发费用一览表,网页设计与制作课程的学情文章目录 一、纯虚函数和抽象类1、纯虚函数2、纯虚函数语法3、抽象类和实现 二、完整代码示例 一、纯虚函数和抽象类 1、纯虚函数 纯虚函数 : 在 C 语言中 , 纯虚函数 是 特殊类型的 虚函数 , 纯虚函数 在 父类 中 声明 , 但是没有实现 ;
抽象类 … 文章目录 一、纯虚函数和抽象类1、纯虚函数2、纯虚函数语法3、抽象类和实现 二、完整代码示例 一、纯虚函数和抽象类 1、纯虚函数 纯虚函数 : 在 C 语言中 , 纯虚函数 是 特殊类型的 虚函数 , 纯虚函数 在 父类 中 声明 , 但是没有实现 ;
抽象类 : 纯虚函数 的 作用 是将 父类 变为 抽象类 , 该类不能被实例化 , 不能创建类的实例对象 ;
继承抽象类必须实现纯虚函数 : 任何从 抽象类 派生出来的 子类 都必须提供 纯虚函数 的实现 ; 父类 中的 纯虚函数 为 其若干子类 提供了一个 公共界面 , 用于 接口的 封装 / 设计 , 软件的 模块划分 ; 2、纯虚函数语法 纯虚函数语法 :
函数前 使用 virtual 关键字修饰 ;函数声明后在 括号后面为函数 赋值 0 ;
// 纯虚函数定义
virtual 返回值类型 函数名(参数列表) 0;纯虚函数 定义 代码示例如下 : // 纯虚函数 virtual void pureVirtualFunction() 0;3、抽象类和实现 抽象类 就是在类中定义了一个 纯虚函数 , 抽象类 至少包含一个纯虚函数 , 抽象类 不能 创建 实例对象 , 只能作为其它类的 父类 ; 纯虚函数 是一种在 父类 中 声明但没有实现 的虚函数 , 其目的是使 父类 成为抽象类 ;
任何从抽象类派生出来的子类都必须提供 纯虚函数 的实现 ; 抽象类 代码示例 :
// 定义了纯虚函数的类就是抽象类
class AbstractClass {
public: // 纯虚函数 virtual void pureVirtualFunction() 0;
};上述 AbstractClass 类是抽象类 , 该类不能创建实例对象 ;
否则会报错 error C2259: “AbstractClass”: 无法实例化抽象类 ;
子类 继承 AbstractClass 类 , 必须 实现 virtual void pureVirtualFunction() 函数 ; 下面代码中 , DerivedClass 派生类 , 继承 AbstractClass 抽象类 , 实现了 纯虚函数 pureVirtualFunction 函数 ;
实现的 纯虚函数 可以不使用 virtual 修饰 , 在 函数声明 最后添加 override 关键字 ;
// 派生类继承抽象类
class DerivedClass : public AbstractClass {
public: // 实现纯虚函数void pureVirtualFunction() override { // 函数体 }
};二、完整代码示例 抽象类 的 核心作用 就是 使用 抽象类类型指针 指向 子类对象 ,
使用 抽象类 指针 调用 纯虚函数 , 由于 父类 的 纯虚函数没有实现 , 实际调用的 是 子类对象的 函数 ,
该调用 发生了 多态 ; 代码示例 :
#include iostream
using namespace std;// 定义了纯虚函数的类就是抽象类
class AbstractClass {
public:// 纯虚函数 virtual void pureVirtualFunction() 0;
};// 派生类继承抽象类
class DerivedClass : public AbstractClass {
public:// 实现纯虚函数void pureVirtualFunction() override {// 函数体 cout 调用 DerivedClass 的 pureVirtualFunction 函数 endl;}
};int main() {// 抽象类不能实例化// error C2259: “AbstractClass”: 无法实例化抽象类//AbstractClass a;// 使用抽象类指针 指向 子类对象AbstractClass* p new DerivedClass();// 使用抽象类指针 调用 子类对象 实现的 纯虚函数// 运用了 多态 原理p-pureVirtualFunction();// 控制台暂停 , 按任意键继续向后执行system(pause);return 0;
}执行结果 :
调用 DerivedClass 的 pureVirtualFunction 函数
Press any key to continue . . .