【C++继承与派生之二】有子对象的派生类的构造函数
2013-09-16 18:48
344 查看
这是我今天看书刚刚看到的,觉着以前对这一块内容了解不多,所以整理一下分享给大家。首先要介绍一下子对象的概念。类的数据成员不仅可以是int、char这样的基本类型,也可以是类对象,如可以包含这样的数据成员:
这时s1就是类对象中的内嵌对象,即为
子对象,这与结构体类型的成员可以是结构体变量类似。
回顾一下简单派生类构造函数的写法:
派生类一般构造函数格式为
派生类名 (总参数列表):基类名(参数列表){派生类新增数据成员初始化语句;}
子对象的派生类构造函数如何写呢?
我们都知道对象应该在建立之时就初始化,但显然子对象的初始化不能在声明派生类时就对它进行,因为类是抽象类型,只是一个模型,不能有具体的数据。所以子对象的初始化是在建立派生类时通过调用派生类构造函数来实现的。在刚才的例子中增加一个班长项,班长的类型很显然就是student,所以它是一个子对象,现在构造函数如下:
在上面构造函数中一共有八个参数,前三个是基类构造函数的参数,第4、5、6个参数是子对象构造函数参数,最后两个是用作派生类数据成员初始化的。
归纳一下,构造函数格式如下
派生类构造函数名(总参数列表):基类构造函数名(参数列表),子对象名(参数列表)
{派生类新增数据成员初始化语句}
Student s1; //Student是已经声明的类
这时s1就是类对象中的内嵌对象,即为
子对象,这与结构体类型的成员可以是结构体变量类似。
回顾一下简单派生类构造函数的写法:
class 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{ public: student1(int n,string nam,char s,int a,string ad):student(n,nam,s){ age=a; addr=ad; } ~student1(){} private: int age; string addr; };
派生类一般构造函数格式为
派生类名 (总参数列表):基类名(参数列表){派生类新增数据成员初始化语句;}
子对象的派生类构造函数如何写呢?
我们都知道对象应该在建立之时就初始化,但显然子对象的初始化不能在声明派生类时就对它进行,因为类是抽象类型,只是一个模型,不能有具体的数据。所以子对象的初始化是在建立派生类时通过调用派生类构造函数来实现的。在刚才的例子中增加一个班长项,班长的类型很显然就是student,所以它是一个子对象,现在构造函数如下:
student1(int n,string nam,char s,int n1,string nam1,char s1,int a,string ad): student(n,nam,s),monitor(n1,nam1,s1){ age=a; addr=ad; }
在上面构造函数中一共有八个参数,前三个是基类构造函数的参数,第4、5、6个参数是子对象构造函数参数,最后两个是用作派生类数据成员初始化的。
归纳一下,构造函数格式如下
派生类构造函数名(总参数列表):基类构造函数名(参数列表),子对象名(参数列表)
{派生类新增数据成员初始化语句}
相关文章推荐
- 【C++继承与派生之二】有子对象的派生类的构造函数
- C++基础(九)继承与派生——派生类成员的构造函数和析构函数
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- [C++]派生类构造函数举例(多继承、含有内嵌对象)
- C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则)
- C++学习之路—继承与派生(二):派生类的构造函数与析构函数
- C++继承具体解释之二——派生类成员函数具体解释(函数隐藏、构造函数与兼容覆盖规则)
- C++中虚继承派生类构造函数的正确写法
- c++ Prime(第六版) P486 类继承 派生类构造函数
- C++编程入门系列之四十二(继承与派生:虚基类及其派生类的构造函数)
- 【C++的探索路11】继承与派生之拓展篇--多形式派生以及派生类指针转换
- 深入探索C++对象模型之二 --- 构造函数语意学
- C++ 继承语义下构造函数中的对象指针
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
- 继承与派生:虚基类及其派生类的构造函数
- 继承与派生 编程题#2: 魔兽世界之二:装备(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 【C++】继承派生中对象相互赋值情况
- 【C++对象模型】构造函数语意学之二 拷贝构造函数
- 继承与派生3:派生类的构造函数与析构函数
- C++中建立派生类对象时构造函数的调用顺序