派生类的构造函数和析构函数
一.简单派生类的析构函数和构造函数。
1.简单派生类构造函数的定义形式:派生类构造函数名 (总参数表列):基类构造函数名 (参数表列){ 派生类新增加数据成员初始化语句}
其中,总参数表列中的参数包括派生类参数和基类参数,且基类参数放在最前面。
参数表列里中只有参数名,没有参数类型。
2.注意简单派生类构造函数的定义形式中,中间有一个冒号。
3.参数表列的参数并不是形参,而是实参,它是由总参数表列中传递过来的。
4.派生类和基类析构函数定义方法相同:~析构函数名(){ },注意花括号后边不加分号。
5.与派生类构造函数和析构函数相关的代码如下:
#include<iostream>
#include<string>
using namespace std;
class Student//定义基类对象
{public:Student(int n,string na):num(n),name(na){}//定义基类构造函数~Student() {}//定义基类析构函数
protected:int num;string name;
};
class student1:public Student//定义派生类对象
{
public://student1(int n, string na, float s, char se) :Student(n, na)//定义派生类构造函数//{// score = s;// sex = se;//}student1(int n,string na,float s,char se):Student(n,na),score(s),sex(se){}//也可以通过这种方式定义派生类构造函数void display(){cout << "学号:" << num<<" " << "姓名:"<< name <<" "<< "成绩:"<<score <<" "<< "性别:" << sex;}~student1(){}//定义派生类析构函数
private:float score;char sex;
};
int main()
{student1 s(2019, "刘子祥", 100, 'm');//定义派生类对象s.display();return 0;
}
二.有子对象的派生类构造函数
1.在类对象中内嵌的作为数据成员的对象称为子对象。
2.子对象的初始化是在建立派生类时通过派生类构造函数来实现的。
3.子对象肯定是属于另一类的对象,因此子对象的数据成员与类的数据成员对应。
4.代码示例如下:
#include<iostream>
#include<string>
using namespace std;
class Student//定义一个基类
{
public:Student(int n, string na):num(n),name(na){}//定义基类构造函数void display(){cout << num << " " << name<<endl;}
protected:int num;string name;
};
class Student1 :public Student//定义派生类,继承方式为public类型
{
public:Student1(int n,string na,int n1,string na1,float sc,char se):Student(n,na),s(n1,na1)//定义有子对象的派生类构造函数{score = sc; sex = se;}void display_s()//输出学号,姓名,成绩,姓名,其中学号和成绩通过display函数输出{display();cout << score << " " << sex << endl;}void display_m()//输出班长信息{s.display();}
private:Student s;//定义一个对象成员float score;char sex;
};
int main()
{Student1 s(20191, "lzx", 20192, "gaoxin", 99, 'm');//定义派生类对象s.display_s();s.display_m();return 0;}
5.总结:
有子对象的派生类构造函数定义形式如下:
派生类构造函数名(总参表列):基类构造函数名(参数表列)子对象名(参数表列){派生类数据成员初始化语句}
6.编译系统是根据基类和子对象的参数名来确立他们的参数关系的。
三.多层派生时的构造函数
1.多层派生的构造函数是在上面简单派生类构造函数和有子对象构造函数的基础上编写的。
2.多层派生类构造函数的书写,只需写出其上一层构造函数的参数的同时也写出新增的参数,不必一层一层列出。
3.派生类构造函数的函数体可以为空,即花括号的内容可以为空。
派生类的构造函数和析构函数相关推荐
- php 派生类 构造,C++派生类的构造函数和析构函数
派生类对象中包含基类对象,因此派生类对象在创建时,除了要调用自身的构造函数进行初始化外,还要调用基类的构造函数初始化其包含的基类对象.因此,程序中任何能够生成派生类对象的语句,都要说明其包含的基类对象 ...
- C++派生类的构造函数和析构函数
C++派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public ...
- c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]
说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...
- C++中基类与派生类的构造函数和析构函数
1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...
- c++派生类和基类的构造函数和析构函数
基类和派生类的构造函数顺序,先调用基类的构造函数,在调用派生类的构造函数, 析构函数而言,先调用派生类的析构函数,再调用基类的析构函数 #include<iostream> using n ...
- 6.12C++:继承基类的构造函数、单继承的构造函数、多继承的构造函数、派生类复制构造函数、派生类的析构函数
1 继承基类的构造函数 class A{public:A(){}; // A的构造函数 }; class B : public A{public:using A:A: } 2 单继承的构造函数 cla ...
- 派生类中构造函数与虚构函数的研究
1.继承过程中的构造函数 A:继承与派生过程中,基类的构造函数不能被继承,派生类中需要声明自己的构造函数. B:声明构造函数时,只需要对本类中新增成员进行初始化.至于基类继承过来的成员,应该调用基类的 ...
- C++类的构造函数、析构函数与赋值函数
C++类的构造函数.析构函数与赋值函数 构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险. 每个类只有一个析构函数和 ...
- 基类和派生类的构造函数,隐式调用与显式调用
1. 顺序 当创建一个派生类的对象时,系统首先自动创建一个基类对象,也就是说,在调用派生类构造函数创建派生类对象之前,系统首先调用基类的构造函数创建基类对象.当派生类对象生命期结束时,首 ...
最新文章
- 9月Python开源项目Top10
- 再次分享一个多选文件上传方案“.NET研究”
- 属于服务器操作系统的有,属于服务器操作系统的有
- 【趣味分享】C#实现回味童年的24点算法游戏
- 关于SAP Commerce Cloud OCC API url里不包含user信息的问题
- linux curl模拟登录网页
- 阿里巴巴对Java编程【集合处理】的规约
- python request 留位置4
- mac android手机调试,mac os开发android应用通过usb真机调试
- 联系实际谈谈管理者的沟通协调能力建设
- 绝地求生更新完后显示服务器忙,绝地求生2月1日更新好了吗?更新后提示服务器繁忙怎么办?...
- ORM框架之Mybatis(六)mybatis通用mapper
- 微型计算机工作适宜的温度,应用电脑(1)第一章 第一节 计算机的基本组成...
- 百度文库免费复制文字_我们有2种通过鼠标右键复制百度文库的方法要告诉你...
- Ubuntu 20.04 Install Navicat
- 路由交换实验一——CISCO路由器的基本配置
- ​ ViewBag​
- Excel基础知识一:Excel功能区、单元格快速定位与选择、Ctrl与Shift的配合使用
- 制作帮助文档的好助手- WORD2CHM WORD2HTML
- 装备制造业ERP软件如何帮助企业做好物料齐套管理?