C++ 中的封装、继承
2015-08-07 21:15
281 查看
一、封装
封装就是将抽象得到的数据和行为相结合,幸好曾一个有机的整体,将数据的源代码进行有机的结合,形成类。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,特定的访问权限来使用类的成员。封装可以隐藏实现细节,使代码模块化。
二、继承
C++通过类派生机制来支持继承。被继承的类型称为基类,新产生的类为派生类活子类。保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过程称为派生。继承和派生的目的是保持已有类的特性并构造新类。继承的目的:实现代码重用。派生的目的:实现代码扩充。三种继承方式:public、protected、private。
继承时的构造函数:(1)、基类的构造函数不能被继承,派生类中需要声明自己的构造函数;
(2)、声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成;
(3)、派生类的构造函数需要给基类的构造函数传递参数;
(4)、当基类中声明有默认形式的构造函数或未声明构造函数时,派生类构造函数可以不向基类构造函数传递参数;
(5)、若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数;
(6)、当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数;
(7)、构造函数的调用次序:A、调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右);B、调用成员对象的构造函数,调用顺序按照它们在类中的声明的顺序;C、派生类的构造函数体中的内容。
继承时的析构函数:(1)、析构函数也不被继承,派生类自行声明;
(2)、声明方法与一般(无继承关系时)类的析构函数相同;
(3)、不需要显示地调用基类的析构函数,系统会自动隐式调用;
(4)、析构函数的调用次序与构造函数相反。
同名隐藏规则:当派生类与基类中有相同成员时:(1)、若未强行指名,则通过派生类对象使用的是派生类中的同名成员;
(2)、如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定:基类名::数据成员名。
虚基类:作用:(1)、主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题;
(2)、为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝。
封装就是将抽象得到的数据和行为相结合,幸好曾一个有机的整体,将数据的源代码进行有机的结合,形成类。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,只需要通过外部接口,特定的访问权限来使用类的成员。封装可以隐藏实现细节,使代码模块化。
#include<iostream> using namespace std; class Student { public: void setAge(int _age) { age = _age; } int getAge() { return age; } private: int age; string name; };上面就对 Student类中的成员变量 age进行的封装
二、继承
C++通过类派生机制来支持继承。被继承的类型称为基类,新产生的类为派生类活子类。保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过程称为派生。继承和派生的目的是保持已有类的特性并构造新类。继承的目的:实现代码重用。派生的目的:实现代码扩充。三种继承方式:public、protected、private。
继承时的构造函数:(1)、基类的构造函数不能被继承,派生类中需要声明自己的构造函数;
(2)、声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成;
(3)、派生类的构造函数需要给基类的构造函数传递参数;
(4)、当基类中声明有默认形式的构造函数或未声明构造函数时,派生类构造函数可以不向基类构造函数传递参数;
(5)、若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数;
(6)、当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数;
(7)、构造函数的调用次序:A、调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右);B、调用成员对象的构造函数,调用顺序按照它们在类中的声明的顺序;C、派生类的构造函数体中的内容。
继承时的析构函数:(1)、析构函数也不被继承,派生类自行声明;
(2)、声明方法与一般(无继承关系时)类的析构函数相同;
(3)、不需要显示地调用基类的析构函数,系统会自动隐式调用;
(4)、析构函数的调用次序与构造函数相反。
同名隐藏规则:当派生类与基类中有相同成员时:(1)、若未强行指名,则通过派生类对象使用的是派生类中的同名成员;
(2)、如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定:基类名::数据成员名。
虚基类:作用:(1)、主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题;
(2)、为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝。
相关文章推荐
- 标准C++中的string类的用法总结
- C++static成员的使用
- hpuoj 1005: C语言考试练习题_排列【dfs】
- C/C++,Windows/MFC, char, wchar_t, TCHAR 字符全总结 & c++字符串操作经验集
- 12、C语言和设计模式(代理模式)
- 11、C语言和设计模式(外观模式)
- 常用的一些文件操作函数
- markup.cpp
- C语言 用汇编来看看变量和指针实现
- c++/c中流的概念
- 第一篇博客 :水题试练
- C++对象模型——指向Data Members的指针(Pointer to Data Members)(第三章)
- C++ 指针函数介绍
- C++(17)STL实践与分析之再谈迭代器
- C++(16)STL实践与分析之初探算法
- c++类实现二分查找+二叉树查找
- C++(15)STL实践与分析之Map类型
- C++(14)STL分析与实践之容器适配器
- C++(13)STL实践与分析之再谈String类型
- C++(12)STL实践与分析之顺序容器