派生类构造函数的定义和使用举例
2016-05-29 13:43
471 查看
1.派生类构造函数的一般形式为:
派生类构造函数名(总参数表):基类构造函数名(参数表)
{
派生类中新增加数据成员初始化语句
}
2.在建立一个对象时,执行构造函数的顺序是:
a.派生类构造函数先调用基类构造函数;
b.再执行派生类构造函数本身(即派生类构造函数的函数体)
3.在派生类对象释放时,先执行派生类析构函数,再执行其基类析构函数
例:定义一个简单的派生类构造函数。
解:程序:
#include<iostream>
#include<string>
using namespace std;
class Student//声明一个基类Student
{
public:
Student(int n, string nam, char s)//定义基类构造函数
{
num = n;
name = nam;
sex = s;
}
~Student()//基类析构函数
{
}
protected:
int num;
string name;
char sex;
};
class Student1 :public Student//声明公用派生类Student1
{
public:
Student1(int n, string nam, char s, int a, string ad) :Student(n, nam, s)//定义派生类构造函数
{
age = a;//在函数体中只对派生类新增加的数据成员初始化
addr = ad;
}
void show()
{
cout << "num:" << num << endl;
cout << "name:" << name << endl;
cout << "sex:" << sex << endl;
cout << "age:" << age << endl;
cout << "address:" << addr << endl << endl;
}
~Student1()//派生类析构函数
{}
private:
int age;
string addr;
};
int main()
{
Student1 stud1(1001, "yaoyao", 'f', 20, "hanzhong");
Student1 stud2(1002, "xiaoxiao", 'm', 20, "xianyang");
stud1.show();//输出第一个学生数据
stud2.show();//输出第二个学生数据
system("pause");
return 0;
}
结果:
num:1001
name:yaoyao
sex:f
age:20
address:hanzhong
num:1002
name:xiaoxiao
sex:m
age:20
address:xianyang
请按任意键继续. . .
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1763588
派生类构造函数名(总参数表):基类构造函数名(参数表)
{
派生类中新增加数据成员初始化语句
}
2.在建立一个对象时,执行构造函数的顺序是:
a.派生类构造函数先调用基类构造函数;
b.再执行派生类构造函数本身(即派生类构造函数的函数体)
3.在派生类对象释放时,先执行派生类析构函数,再执行其基类析构函数
例:定义一个简单的派生类构造函数。
解:程序:
#include<iostream>
#include<string>
using namespace std;
class Student//声明一个基类Student
{
public:
Student(int n, string nam, char s)//定义基类构造函数
{
num = n;
name = nam;
sex = s;
}
~Student()//基类析构函数
{
}
protected:
int num;
string name;
char sex;
};
class Student1 :public Student//声明公用派生类Student1
{
public:
Student1(int n, string nam, char s, int a, string ad) :Student(n, nam, s)//定义派生类构造函数
{
age = a;//在函数体中只对派生类新增加的数据成员初始化
addr = ad;
}
void show()
{
cout << "num:" << num << endl;
cout << "name:" << name << endl;
cout << "sex:" << sex << endl;
cout << "age:" << age << endl;
cout << "address:" << addr << endl << endl;
}
~Student1()//派生类析构函数
{}
private:
int age;
string addr;
};
int main()
{
Student1 stud1(1001, "yaoyao", 'f', 20, "hanzhong");
Student1 stud2(1002, "xiaoxiao", 'm', 20, "xianyang");
stud1.show();//输出第一个学生数据
stud2.show();//输出第二个学生数据
system("pause");
return 0;
}
结果:
num:1001
name:yaoyao
sex:f
age:20
address:hanzhong
num:1002
name:xiaoxiao
sex:m
age:20
address:xianyang
请按任意键继续. . .
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1763588
相关文章推荐
- 用于字符输入的流成员函数使用举例
- c++中的异常处理定义和使用方法
- 在异常处理中处理析构函数
- 函数的传值调用,传址调用和引用调用分析
- 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- BOOL变量 , float变量, 指针变量和整型变量与“零值”比较
- c/c++程序的文件结构
- 打印楼梯,同时在楼梯上方打印两个笑脸
- 在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数
- 企业发放奖金根据利润提成,从键盘输入当月利润I,求应发放奖金总数?
- 类型萃取
- C++/ C循环语句的效率问题
- 指针与数组的比较
- 顺序表的查找、插入、删除、合并操作及其优缺点
- 单链表的头插、尾插、删除、合并等操作
- win10系统桌面图标变为白色方框和去除桌面图标快捷方式小箭头的方法
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
- 斐波拉契数列的递归、非递归、公式法多种方法实现
- 如何暴力解决弱N皇后问题(比较sb的做法)
- 中高级运维工程师所需要掌握的技能