C++入门经典-例8.1-类的继承

1:继承是面向对象的主要特征(此外还有封装和多态)之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类。继承的实质就是用已有的数据类型创建新的数据类型,并保留已有数据类型的特点,以旧类为基础创建新类,新类包含了旧类的数据成员和成员函数,并且可以在新类中添加新的数据成员和成员函数。旧类被称为基类或父类,新类被称为派生类或子类。

2:类的继承形式如下:

class 派生类名称标识符:[继承方式] 基类名称标识符

{

    [访问控制修饰符:]

    [ 成员声明列表]

}

    继承方式有3中派生类型,分别为共有型(public)、保护型(protected)和私有型(privated),访问控制修饰符也是public、protected、private三种类型,成员声明列表中包含类的成员变量及成员函数,是派生类新增的成员。“:”是一个运算符,表示基类和派生类之间的继承关系。

3:一个小例子。定义一个员工类,它包含员工ID、员工姓名、所属部门等信息。

class CEmployee//定义员工类

{

public:

    int m_ID;//定义员工ID

    char m_Name[128];//定义员工姓名

    char m_Depart[128];//定义所属部门

}

    定义一个操作员类,通常操作员属于公司的员工,它包含员工ID、员工姓名、所属部门等信息,此外还包含密码信息、登录方法等。

class COperator :public CEmployee//定义一个操作员类,从CEmployee类派生而来

{

public:

    char m_Password[128];//定义密码

    bool Login();  

}

    操作员类是从员工类派生的一个新类,新类中增加密码信息、登录方法等,员工ID、员工姓名等信息直接从员工类中继承得到。

3:例子代码如下:

// 8.1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class CEmployee                            //定义员工类
{
public:int m_ID;                                //定义员工IDchar m_Name[128];                        //定义员工姓名char m_Depart[128];                        //定义所属部门CEmployee()                            //定义默认构造函数
    {memset(m_Name,0,128);                //初始化m_Name//注意这种用法,可以随意设置名字和部门memset(m_Depart,0,128);            //初始化m_Depart
    }void OutputName()                            //定义共有成员函数
    {cout <<"员工姓名"<<m_Name<<endl;        //输出员工姓名
    }
};
class COperator :public CEmployee                //定义一个操作员类,从CEmployee类派生而来
{
public:char m_Password[128];                    //定义密码bool Login()                            //定义登录成员函数
    {if (strcmp(m_Name,"MR")==0 &&        //比较用户名。比较两个字符串,设这两个字符串为str1,str2,若str1==str2,则返回零;若str1>str2,则返回正数;若str1<str2,则返回负数。strcmp(m_Password,"KJ")==0)        //比较密码
        {cout<<"登录成功!"<<endl;                //输出信息return true;                    //设置返回值
        }else{cout<<"登录失败!"<<endl;            //输出信息return false;                    //设置返回值
        }}
};
int main(int argc, char* argv[])
{COperator optr;                            //定义一个COperator类对象strcpy(optr.m_Name,"MR");                //访问基类的m_Name成员strcpy(optr.m_Password,"KJ");                //访问m_Password成员optr.Login();                            //调用COperator类的Login成员函数optr.OutputName();                        //调用基类CEmployee的OutputName成员函数return 0;
}
View Code

运行结果:

     程序中,CEmployee类是COperator类的基类,也就是父类。COperator类将继承CEmployee的所有非私有成员(private类成员不能被继承)。

    用户在父类中派生子类时,可能存在一种情况,即在子类中定义了一个与父类同名的成员函数,此时称为子类隐藏了父类的成员函数。

转载于:https://www.cnblogs.com/lovemi93/p/7565163.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TOJ 2857 Stockbroker Grapevine

描述 Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of spreading disinformation amongst the stockbrokers to give your employer the tactical edge in the stock market. For maximum effect, you have to spread the r…

input type='file' 上传文件时显示文件名及上传进度

https://blog.csdn.net/qq_36687640/article/details/78551217 1、input typefile 上传文件时显示文件名及上传进度 <input type"file" οnchange"showPreview(this)"> <p class"show"></p> <script> function show…

有意思的PHP代码块-面试经典_无需整理

为什么80%的码农都做不了架构师&#xff1f;>>> 不使用PHP自带反转函数&#xff0c;将字符串反转。//不用自带函数将其反转 方法一 $str "This is PHP"; $strArr explode( ,$str); $count count($strArr)-1; for($i$count;$i>0;$i--){$revStr . $s…

iOS开发之UITableView中计时器的几种实现方式(NSTimer、DispatchSource、CADisplayLink)

最近工作比较忙&#xff0c;但是还是出来更新博客了。今天博客中所涉及的内容并不复杂&#xff0c;都是一些平时常见的一些问题&#xff0c;通过这篇博客算是对UITableView中使用定时器的几种方式进行总结。本篇博客会给出在TableView中使用NSTimer或者DispatchSourcer中常见的…

html5爱心表白

http://js.itivy.com/jiaoben1892/index.html http://bangpai.sourceforge.net/main.html转载于:https://www.cnblogs.com/h07061108/p/html5_love.html

CentOS查看每个进程的网络流量

所需工具nethogs 安装&#xff1a;yum install -y nethogs 使用&#xff1a;nethogs eth0 sudo nethogs -s //按接收流量大小排序 如上图&#xff0c;PID一列就是进程的PID&#xff0c;PROGRAM就是显示进程或连接双方的端口号&#xff0c;前面红框是服务器的IP:端口&#xff0…

sqlserver中 事物 索引及视图

事务1、什么是事务事务是一个不可分割的工作逻辑单元&#xff0c;它包含了一组数据库的操作命令&#xff0c;并且所有命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即要么都执行&#xff0c;要么都不执行&#xff12;、事务的4个属性(1)、原子性(Atomicity)&#…

ubuntu下如何设置apache的启动和重启

ubuntu下如何设置apache的启动和重启 1、启动aoache服务 sudo /etc/init.d/apache2 start 2、重启apache服务 sudo /etc/init.d/apache2 restart 3、停止apache服务 sudo /etc/init.d/apache2 stop _______________________________ 注&#xff1a;a、这里的sudo可要可不要…

转:Java反射教程

原文来自于&#xff1a;http://www.importnew.com/9078.html 什么是反射&#xff1f;反射有什么用处&#xff1f; 1. 什么是反射&#xff1f; “反射&#xff08;Reflection&#xff09;能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省&#xff08;Int…

浅入浅出数据结构(20)——快速排序

正如上一篇博文所说&#xff0c;今天我们来讨论一下所谓的“高级排序”——快速排序。首先声明&#xff0c;快速排序是一个典型而又“简单”的分治的递归算法。 递归的威力我们在介绍插入排序时相比已经见识过了&#xff1a;只要我前面的队伍是有序的&#xff0c;我就可以通过向…

django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分

编写你的第一个 Django 程序 第1部分 让我们通过例子来学习。 在本教程中&#xff0c;我们将引导您创建一个基本的投票应用。 它将包含两部分&#xff1a; 一个公共网站&#xff0c;可让人们查看投票的结果和让他们进行投票。一个管理网站&#xff0c;可让你添加、修改和删除投…

Newtonsoft.json中 linq to json 和序列化哪个快?

Newtonsoft.json是最常用的json序列化组件&#xff0c;当然他不是最快的&#xff0c;但是是功能最全的。。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using Newtonsoft.Json.Linq; using Newtonsoft…

ubuntu 下 php 安装 zip

linux(ubuntu/centos)、windows安装php-zip扩展 PHP安装zip拓展&#xff0c;以及libzip安装问题

结对第一次作业

同学A : 031502630 - 吴松青 同学B : 031502644 - 邹星 第一次结对作业 本次作业的要求是设计一个方便部门纳新与学生选择部门的app&#xff0c;当然只是原型......刚开始怕要求实现的我们畏首畏尾&#xff0c;总得考虑到后期的实现的困难。最后老师提醒我们不需要实现后&#…

仿美团实现地域选择和城市列表

介绍 在开发O2O相关应用的时候&#xff0c;肯定会有定位&#xff0c;选择所在城市&#xff0c;选择地域&#xff0c;然后再向服务器请求该地区的相关数据&#xff0c;这时就需要我们提供一个导向让用户选择所在区域。 看来看去&#xff0c;最终还是选择模仿美团&#xff0c;感觉…

PHP5.5新特性

1 生成器 yield关键字 yield的中文文档在这里&#xff1a;http://php.net/manual/zh/language.generators.overview.php 查看文档&#xff0c;能知道yield的一个功能就是能有效的降低迭代的内存开销。比如官网的这个xrange例子&#xff1a; 12345678910111213141516171819<?…

Ubuntu16.04中php如何切换版本

其实就是一条Linux命令,如下: sudo update-alternatives --config php 会出现下面选项: There are 2 choices for the alternative php (providing /usr/bin/php).Selection Path Priority Status -------------------------------------------------------…

Java之杨辉三角的实现

今天突然想温习一下Java的基础&#xff0c;想了想就写写杨辉三角吧 1、直接法&#xff0c;利用二维数组 1 import java.util.Scanner;2 public class Second3 {4 public static void main(String[] args) {5 // TODO Auto-generated method stub6 Scanner …

MAC下面maven如何设置让其实下载源码

2019独角兽企业重金招聘Python工程师标准>>> Eclipse--->偏好设置&#xff0d;&#xff0d;&#xff0d;&#xff0d; >Maven--->download artifact source 转载于:https://my.oschina.net/u/2422498/blog/500292

chmod 777修改权限指令介绍

chmod 777修改权限指令介绍