(C++基础)浅谈继承与派生
2017-03-16 20:54
190 查看
C++是门面向对象的编程语言,四个主要特点:抽象、封装、继承、派生。
C++中可重用性是通过“继承”这一机制来实现的,因此继承是C++的一个重要组成部分。
清理顺序:
先执行派生类的的析构函数,对派生类增加的成员进行清理,再进行子对象的析构函数,最后调用基类的析构函数。
注意:
多重继承的时候,声明方式,构造函数的形式与单继承一样,就是加个:Student(n,a,s)。特殊情况特殊处理。
2017年3月16日20:54:11
C++中可重用性是通过“继承”这一机制来实现的,因此继承是C++的一个重要组成部分。
一 什么是继承?
比如一个类里面有学生的基本信息,学号,姓名,性别等,学校的某个部门需要用到学号,姓名,性别以外还需要 用到年龄地址等等,如果重新声明一个类重新定义这些东西会很繁琐,很有可能使你搞混了谁是谁,此时就可以用到继承了,可以继承之前类的信息,并且可以在新的类中声明新的变量方法等。继承哪个类哪个类就叫“基类”,新的类就是“派生”类。二 派生类的声明方式
class Student { int num; string name; char sex; }; class Student1 :public Student //声明基类是谁 { public: void display() //派生类中新增加的函数 { } }
注:派生类继承了基类除了构造函数与析构函数之外的所有成员!
三 派生类的访问属性
在基类的访问属性 | 继承方式 | 在派生类中的访问属性 |
private | public | 不可访问 |
private | private | 不可访问 |
private | protected | 不可访问 |
public | public | public |
public | private | private |
public | protected | protected |
protected | public | protected |
protected | private | private |
protected | protected | protected |
四 派生类的构造函数与析构函数
用户在定义类的时候可以不声明但是每个类都有个默认的构造函数,空函数,没啥用。如果想对类中的数据成员初始化就需要自己定义构造函数。4.1简单派生类的构造函数
class Student { public: Student(int n, string nam, char s) { num = n; name = nam; sex = s; } int num; string name; char sex; }; class Student2:public Student { public: Student(int n, string nam, char s, int a, string ad) :Student(n, nam, s)//定义派生类构造函数 { age = a; //在函数体内只对派生类新增的数据成员初始化 注:因为这里是调用基类的构造函数 addr = ad; //所以(n,nam,s)没有类型,因为他们是实参,不是形参 } private: int age; string addr; }
4.2 有子对象的派生类构造函数
派生类中需要一个班长,班长的信息和他们一样,属性和他们一样,则在派生类中定义一个对象,此时要在声明派生类构造函数的同时对班长初始化,如下:class Student { public: Student(int n, string nam, char s) { num = n; name = nam; sex = s; } int num; string name; char sex; }; class Student2:public Student { public: Student(int n, string nam char s,int n1,string nam1,char s1, int a, string ad) :Student(n, nam, s),duixiang(n1,nam1,s1)/ { age = a; //这个对象的初始化就如此,不知道该怎么解释,自己看吧。。。 addr = ad; } private: int age; string addr; student duixiang; }
五 析构函数
因为派生类不能继承基类的析构函数,所以需要派生类的析构函数去调用基类的析构函数。在对派生类清理的时候会自动调用基类的构造函数,对基类和子对象进行清理。清理顺序:
先执行派生类的的析构函数,对派生类增加的成员进行清理,再进行子对象的析构函数,最后调用基类的析构函数。
注意:
多重继承的时候,声明方式,构造函数的形式与单继承一样,就是加个:Student(n,a,s)。特殊情况特殊处理。
2017年3月16日20:54:11
相关文章推荐
- C++基础(九)继承与派生——派生类成员的构造函数和析构函数
- 关于C++程序设计的基础核心之二:继承与派生的基本知识
- c++基础(继承与派生)
- C++基础——继承与派生
- C++基础:继承与派生(声明 继承方式 访问规则)
- 【c++程序】浅谈继承与派生
- 【C++学习笔记】继承与派生基础概念
- C++基础(八)继承与派生——派生类成员的访问属性
- 【c++语言基础】浅析C++继承与派生
- C++基础(十)继承与派生——多重继承
- C++基础之继承与派生
- C/C++基础知识总结——继承与派生
- C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)
- c++基础10:继承和派生 虚函数的作用 多态性概念 纯虚函数和抽象类的概念
- 【C++学习笔记】继承与派生基础概念
- C++_继承与派生
- C++之继承与派生(2)
- C++之继承与派生(3)
- C++第十周【任务3】类的继承和派生
- C++之继承与派生(1)