C++笔记——继承(代码还有些问题)
来源:互联网 发布:三年级数学算法 编辑:程序博客网 时间:2024/06/07 07:24
继承的概念
继承是 C++中类机制的一部分,该机制使类与类之间可以建立一种上下级关系,继承是一种手段,利用继承机制,可以根据另一个类的操作和数据成员来创建新类。
利用继承可以在原有类的基础上构造新类,这一性质使得类与类之间可以建立一种上下级的分类关系。可以说,继承使人们描述事物的能力大大加强和简单化了。
派生类就是实现继承的,它继承了起父类的属性和操作,那些父类已经存在,在新的应用中无需修改,所要做的就是派生子类,在子类中做一些添加和修改,这种机制使重用成为可能。
继承的工作方式
下面的例子给出了通过已有的Person类来创建一个新类——Employee,二者显然有着某种关系,这也说明了继承的作用。!
//10月3日第二个程序#include "stdafx.h"#include<iostream>#include<iomanip>#include<string>using namespace std;class Person //先定义一个“人”类{public: string m_strName; //字符串类型,姓名 string m_strBirthDate; //出生年月 Person() { m_strName = "noNzme"; m_strBirthDate = "yyyy-mm-dd"; }}; class Employee : public Person //在Person类基础上构造一个Employee类 { public: string m_strHireDate; //只需单独写出自己新增的类成员 Employee(char *Name, char *BirthDate, char *HireDate) { m_strName = Name; m_strBirthDate = BirthDate; m_strHireDate = HireDate; } }; int main() { Employee aEmp("Mao Huifei","1977-10-01","2001-05-01"); cout << ">>>>>>>Employee>>>>>>>"<<endl; cout << "NAME:" << aEmp.m_strName << endl; cout << "BirthDate:" << aEmp.m_strBirthDate << endl; cout << "HireDate:" << aEmp.m_strHireDate<<endl; return 0; }
运行结果如下:
显然,子类Employee 包含了父类成员和它自己所特有的成员,所以通过子类对象不仅可以访问自己的数据成员,还可以访问父类成员。对于父类中的public 成员,在子类中它们仍然是public 的,子类还可以像访问它自己的成员一样直接访问它们。
例如,在Employee 子类的构造函数中,且然没有定义姓名和出生日期数据成员,但一样可以访问它们。
Employee(char *Name, char *BirthDate, char *HireDate) { m_strName = Name; m_strBirthDate = BirthDate; m_strHireDate = HireDate; } };
注意:子类可以直接访问基类的public和protected成员,但是不能直接访问基类中private成员如果需要在派生类中访问基类的private成员,也只能通过访问基类的public成员实现。
下面的程序演示了怎样访问基类的private 成员。
//10月3日第3个程序#include "stdafx.h"#include<iostream>#include<iomanip>#include<string> using namespace std; class Person //先定义一个“人”类 { private: string m_strName; //字符串类型,姓名 string m_strBirthDate; //出生年月 public: void SetName(char *Name) { m_strName = Name; } string & GetName() { return m_strName; } void SetName(char *Name) Person() { m_strName = "noNzme"; m_strBirthDate = "yyyy-mm-dd"; } }; class Employee : public Person //在Person类基础上构造一个Employee类 { public: string m_strHireDate; //只需单独写出自己新增的类成员 Employee(char *Name, char *BirthDate, char *HireDate) { m_strName = Name; m_strBirthDate = BirthDate; m_strHireDate = HireDate; } }; int main() { Employee aEmp("Mao Huifei", "1977-10-01", "2001-05-01"); cout << ">>>>>>>Employee>>>>>>>" << endl; cout << "NAME:" << aEmp.m_strName << endl; cout << "BirthDate:" << aEmp.m_strBirthDate << endl; cout << "HireDate:" << aEmp.m_strHireDate << endl; return 0; } lincludeciostream > pincludeciomanip> include<string> using namespace std; class Person pr ivate : string mstrName; str ing m strBirthDate; pub lici - voi dSetName(char *Name) m s t rName - Name; string& GetName() return m strName; vo id SetBirthDate(char *BirthDate) m strBirthDate = BirthDate; GetBirthDate() string& return m_strBirthDate;
阅读全文
0 0
- C++笔记——继承(代码还有些问题)
- 奇偶数分离(还有些细节问题)
- 答C语言初学者——有些问题可以放一放
- C语言——预处理命令(宏)有些问题,宏和函数都可以
- VB基础——还有些运算符
- 转载的一些常用的C函数,还有些用途
- linux下后台启动weblogic服务(还有些注意事项)
- C++——继承与组合例子代码(模拟计算机的组成)
- 黑马程序员 — Objective-C学习笔记(二):继承
- 代码笔记-C++ 继承
- 一个正确的c语言链表代码(中间也有些bug)
- 继承——代码块的继承
- 有些问题
- 有些问题
- C++——继承
- C#——继承
- Java学习笔记——关于继承执行顺序问题
- Java学习笔记——异常中的继承问题
- linux mysql自动备份shell脚本
- Java——垃圾回收机制
- JavaWeb-Servlet-Properties
- PIL (Python Imaging Library) 教程
- LeetCode 122. Best Time to Buy and Sell Stock II
- C++笔记——继承(代码还有些问题)
- C语言 解一元二次方程,求虚数解:共轭复根
- 剑指offer之把字符串转换成整数
- C++迷一样的对象、引用、const
- RPG游戏引擎开发日志1:理解分析RPG游戏
- css知识点
- Centos7开启SSH服务
- RPG游戏引擎开发日志2:地图坐标转换
- Linux下班瓦工VPS + shadowsocks 配置成功记录