C++派生类的构造函数和析构函数
C++派生类的构造函数和析构函数
派生类的构造函数和析构函数
#include <iostream>
using namespace std;
class student
{
public:
student(int num,char* n):number(num),name(n){}
~student(){cout << "student deconstruted" << endl;}
protected:
int number;
char* name;
};
class student1:public student
{
public:
student1(int num,char* n,bool s,int a):student(num,n),sex(s),age(a){}
void show();
~student1(){cout << "student1 deconstruted" << endl;}
protected:
bool sex;
int age;
};
void student1::show()
{
cout << "num: " << number << endl;
cout << "name: " << name << endl;
cout << "age: " << age << endl;
cout << "sex: " << sex << endl;
}
int main()
{
student1 stu(45,"shukai",true,20);
stu.show();
return 0;
}
1.1派生类构造函数的一般形式为:
有子对象的派生类构造函数
#include <iostream>
using namespace std;
class student
{
public:
student(int n,char* nam):num(n),name(nam){}
void display(){cout << name << " " << num << endl;}
protected:
int num;
char* name;
};
class student1:public student
{
public:
student1(int n,char* nam,int n1,char* nam1,int a,bool s):student(n,nam),
monitor(n1,nam1),age(a),sex(s){}
void display1();
void display_monitor();
private:
int age;
bool sex;
student monitor;
};
void student1::display1()
{
cout << "student is " << endl;
display();
cout << age << " " << sex << endl;
}
void student1::display_monitor()
{
cout << "monitor is " << endl;
cout << age << " " << sex << endl;
}
int main()
{
student1 stu(45,"shukai",1,"abc",20,true);
stu.display1();
stu.display_monitor();
return 0;
}
1.1类的数据成员除了标准成员,如(int,char)或系统提供的类型(如string),实际上,类的数据成员中还可以包含类对象,如可以声明一个类时包含这样的数据成员:
派生类构造函数名(总参数表列);基类构造函数名(参数表列),子对象名(参数表列)
编译系统是根据相同的参数名,而不是根据参数的次序来传递数据的。
多层派生时的构造函数
#include <iostream>
#include <string>
using namespace std;
class student
{
public:
student(int n,string nam){num=n;name=nam;}
void display(){cout << "num: " << num << " name: " << name << endl;}
protected:
int num;
string name;
};
class student1:public student
{
public:
student1(int n,string nam,int a):student(n,nam),age(a){}
void display1(){display();cout << "age: " << age << endl;}
protected:
int age;
};
class student2:public student1
{
public:
student2(int n,string nam,int a,bool s):student1(n,nam,a),sex(s){}
void display2(){display1();cout << "sex: " << sex << endl;}
protected:
bool sex;
};
int main()
{
student2 stu(45,"shukai",20,true);
stu.display2();
return 0;
}
1.1 student2的构造函数为student2(int n,string nam,int a,bool s):student1(n,nam,a),sex(s){},注意不必列出每一层的构造函数,只要列出上一层的构造函数即可。
派生类构造函数的特殊形式
派生类的析构函数
C++派生类的构造函数和析构函数相关推荐
- php 派生类 构造,C++派生类的构造函数和析构函数
派生类对象中包含基类对象,因此派生类对象在创建时,除了要调用自身的构造函数进行初始化外,还要调用基类的构造函数初始化其包含的基类对象.因此,程序中任何能够生成派生类对象的语句,都要说明其包含的基类对象 ...
- c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]
说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...
- C++中基类与派生类的构造函数和析构函数
1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...
- 派生类的构造函数和析构函数
一.简单派生类的析构函数和构造函数. 1.简单派生类构造函数的定义形式:派生类构造函数名 (总参数表列):基类构造函数名 (参数表列){ 派生类新增加数据成员初始化语句} 其中,总参数表列中的参数包括 ...
- 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. 顺序 当创建一个派生类的对象时,系统首先自动创建一个基类对象,也就是说,在调用派生类构造函数创建派生类对象之前,系统首先调用基类的构造函数创建基类对象.当派生类对象生命期结束时,首 ...
最新文章
- python【蓝桥杯vip练习题库】ALGO-118连续正整数的和(枚举优化)
- 怎么改变光标Cursor(5种方法)
- 实验六 数组 (2)
- 腾讯云服务器 linux 镜像安装项目环境mysql心得
- Android URLconnection
- 学计算机与学英语作文,初二英语作文(关于计算机与学习)
- 【OpenGL从入门到精通(二)】绘制一个点
- Eclipse中将java类打成jar包形式运行
- 证书体系: PFX 文件格式解析
- 添加MD5 密码加密
- Spark中的数据本地性
- PHP之Smarty模板学习
- 利用老毛桃启动盘制作三合一系统启动:WINPE + CDlinux + Ubuntu
- 用户可以通过软件对计算机,用户可以通过____软件对计算机软、硬件资源进行管理。...
- labview和python哪个易学_如何学好labview?
- 富士通Fujitsu DPK700S 打印机驱动
- 详解黑客的攻击方式1---网络欺骗攻击
- python list 交集并集差集补集
- setBackgroundResource()与setImageBitmap()以及setBackground()的使用
- 第五人格显示服务器错误,第五人格服务器异常玩家秒变GM,时装随便买,玩家:这感觉真好!...
热门文章
- 优酷视频如何将地区设置为中国大陆
- NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
- php与mysql手册下载地址_PHP与Mysql的连接
- android两个java文件内容_java – 在1个请求中将多个文件从Android上传...
- java string字符操作_Java对String类型字符串的各种操作姿势
- c语言编程游戏开代码错误,[蓝桥杯][历届试题]数字游戏 (C语言代码)(兄弟们帮我看一下为什么运行错误86%)...
- x86_64 arm制linux-gcc,arm-linux-gcc 制作
- ddns 被解析为127.0.0.1_我为北京冬奥加油,2020.2.1-2.10冬奥知识分享
- C语言文件与数组之间输入输出操作
- matlab guide对话框+滑动条+弹出式菜单+列表框的使用