(C++基础)浅谈继承与派生
来源:互联网 发布:java表格代码怎么写 编辑:程序博客网 时间:2024/05/17 09:15
C++是门面向对象的编程语言,四个主要特点:抽象、封装、继承、派生。
C++中可重用性是通过“继承”这一机制来实现的,因此继承是C++的一个重要组成部分。
一 什么是继承?
比如一个类里面有学生的基本信息,学号,姓名,性别等,学校的某个部门需要用到学号,姓名,性别以外还需要 用到年龄地址等等,如果重新声明一个类重新定义这些东西会很繁琐,很有可能使你搞混了谁是谁,此时就可以用到继承了,可以继承之前类的信息,并且可以在新的类中声明新的变量方法等。继承哪个类哪个类就叫“基类”,新的类就是“派生”类。
二 派生类的声明方式
class Student{int num;string name;char sex;};class Student1 :public Student //声明基类是谁{public:void display() //派生类中新增加的函数{}}
注:派生类继承了基类除了构造函数与析构函数之外的所有成员!
三 派生类的访问属性
在基类的访问属性继承方式在派生类中的访问属性private public不可访问privateprivate不可访问private protected不可访问publicpublicpublicpublicprivateprivatepublic protectedprotectedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected
四 派生类的构造函数与析构函数
用户在定义类的时候可以不声明但是每个类都有个默认的构造函数,空函数,没啥用。如果想对类中的数据成员初始化就需要自己定义构造函数。
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
0 0
- (C++基础)浅谈继承与派生
- C++: 继承与派生
- 继承与派生(C++)
- C++:继承与派生
- c++基础(继承与派生)
- C++_继承与派生
- C++_继承与派生
- C++_继承与派生
- C++_继承与派生
- 【学习C++】继承与派生
- 【c++程序】浅谈继承与派生
- 继承---派生类(C++)
- 一步一步学习C++(类)之继承与派生
- 继承与派生基础车程序
- C++基础——继承与派生
- Lesson 17 继承与派生基础
- 继承与派生(一)
- 继承与派生(二)
- iOS 打包时出现在other items
- 梦想起航
- Linux系统下的常用命令
- robot framework读取Excel文件,并保存为list
- RatingBar流泪、有脚、显示不全问题
- (C++基础)浅谈继承与派生
- MYSQL(5)触发器
- [IO系统]16 IO调度器-NOOP
- Java读取文件byte转化String问题
- 【项目实战】从抽奖算法感受算法奥妙
- codeforces contest 785 a题
- 指针极简教程
- OA的项目
- xpath提取网页内容