1:抽象类通常作为其他类的父类,如果从抽象类派生的子类是抽象类,则子类必须实现父类中的所有纯虚函数。代码如下:

// 8.10.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std; class CEmployee //定义CEmployee类
{
public:
int m_ID; //定义数据成员
char m_Name[]; //定义数据成员
char m_Depart[]; //定义数据成员
virtual void OutputName() = ; //定义抽象成员函数
}; class COperator :public CEmployee //定义COperator类,派生于CEmployee类
{
public:
char m_Password[]; //定义数据成员
void OutputName() //实现父类中的纯虚成员函数
{
cout << "操作员姓名: "<<m_Name<< endl; //输出信息
}
COperator() //定义COperator类的默认构造函数
{
strcpy(m_Name,"MR"); //设置数据成员m_Name信息
}
};
class CSystemManager :public CEmployee //定义CSystemManager类
{
public:
char m_Password[]; //定义数据成员
void OutputName() //实现父类中的纯虚成员函数
{
cout << "系统管理员姓名: "<<m_Name<< endl; //输出信息
}
CSystemManager() //定义CSystemManager类的默认构造函数
{
strcpy(m_Name,"SK"); //设置数据成员m_Name信息
}
};
int main(int argc, char* argv[]) //主函数
{
CEmployee *pWorker; //定义CEmployee类型指针对象
pWorker = new COperator(); //调用COperator类的构造函数为pWorker赋值
pWorker->OutputName(); //调用COperator类的OutputName成员函数
delete pWorker; //释放pWorker对象
pWorker = NULL; //将pWorker对象设置为空
pWorker = new CSystemManager(); //调用CSystemManager类的构造函数为pWorker赋值
pWorker->OutputName(); //调用CSystemManager类的OutputName成员函数
delete pWorker; //释放pWorker对象
pWorker = NULL; //将pWorker对象设置为空
return ;
}

运行结果:

程序中,从CEmployee类派生出了两个子类,分别为COperator和CSystemManager。这两个类分别实现了父类的纯虚函数OutputName。同样一条语句“pWorker->OutputName();”,由于pWorker指向的对象不同,其行为也不同。

C++入门经典-例8.10-实现抽象类中的成员函数的更多相关文章

  1. C++入门经典-例8.9-抽象类,纯虚函数,创建纯虚函数

    1:包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚函数.抽象类只能作为基类派生出的新的子类,而不能在程序中被实例化(即不能说明抽象类的对象),但是可以使用指向抽象类的指针.在程序开发过程中并 ...

  2. C++入门经典-例5.9-使用空类型指针执行函数

    1:运行代码: // 5.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  3. C++入门经典-例7.1-对象之访问类成员

    1:建立一个类CPerson. (1)在person.h文件中代码: class CPerson { public: //数据成员 int m_iIndex; ]; short m_shAge; do ...

  4. C++入门经典-例4.1-声明、定义和使用函数

    1:代码如下: // 4.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  5. C++入门经典-例2.5-使用附加格式说明scanf函数的格式输入

    1:代码如下: // 2.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" int main() { long iLong; /*长整型变 ...

  6. C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数

    1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: temp ...

  7. C++入门经典-例7.10-运算符的重载,重载加号运算符

    1:曾经介绍过string类型的数据,它是C++标准模版库提供的一个类.string类支持使用加号“+”连接两个string对象.但是使用两个string对象相减确实非法的,其中的原理就是C++所提供 ...

  8. C++入门经典-例7.6-this指针,同一个类的不同对象数据

    1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2 ...

  9. 【PHP面向对象(OOP)编程入门教程】6.如何去使用对象中的成员

    上面看到PHP对象中的成员有两种一种是成员属性, 一种是成员方法.对象我们以经可以声明了,$p1=new Person(); 怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操作符”-& ...

随机推荐

  1. 可以用for循环直接删除ArrayList的特定元素吗?可能会出现什么问题?怎样解决?

    for循环直接删除ArrayList中的特定元素是错的,不同的for循环会发生不同的错误,泛型for会抛出 ConcurrentModificationException,普通的for想要删除集合中重 ...

  2. 百度 Ueditor 使用及规则

    UMeditor 官网::https://ueditor.baidu.com/website/download.html#ueditor文档::http://fex.baidu.com/ueditor ...

  3. nginx 配置简单的静态页面

    nginx 文件服务配置,MIME和 default_type https://blog.csdn.net/qq_26711103/article/details/81116900 nginx 静态页 ...

  4. SSO系统介绍

    1.什么是sso系统 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于 ...

  5. xtrabackup备份恢复过程

    备份 1.全备 innobackupex --user=root --password=123456 --no-timestamp /backup/full 增加数据 mysql> insert ...

  6. deep_learning_凹凸函数

    什么是凸函数及如何判断一个函数是否是凸函数 t元j 一.什么是凸函数 对于一元函数f(xf(x),如果对于任意tϵ[0,1]tϵ[0,1]均满足:f(tx1+(1−t)x2)≤tf(x1)+(1−t) ...

  7. Hive-ha (十三)

    hive-high Avaliable ​ hive的搭建方式有三种,分别是 ​ 1.Local/Embedded Metastore Database (Derby) ​ 2.Remote Meta ...

  8. Excutor线程池

    文章:Java并发(基础知识)—— Executor框架及线程池 待完善……

  9. 需求分析&系统设计

    这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业要求 团队名称 朋友 代打了解一下 这个作业的目标 需求分析&系统设计 一.团队成员的姓名学号列表 学号 姓名 特长 061126 黄天 ...

  10. R树-javascript代码实现过程分析(插入操作)

    R Tree 第一步,创建R树类. 构建一个RTree生成器.用以创建tree对象. 例子:var tree = new RTree(12) var RTree = function(width){ ...