10_c++再论构造函数
来源:互联网 发布:淘宝如何找相似图片 编辑:程序博客网 时间:2024/06/06 09:38
c++再论构造函数
1、构造顺序
先父后儿
解释:a,先调用父类的构造函数,如果有虚拟基类则先调用虚拟基类的构造函数,再调用一般基类的构造函数。b,父类构造函数调用完后再调用自己:本类中如果有对象成员,则先调用对象成员的构造函数,再调用本类的构造函数。
class Furniture {private: int weight;public: void setWeight(int weight) { this->weight = weight; } int getWeight(void) const { return weight; }public: Furniture() { cout <<"Furniture()"<<endl; }};class Vertification3C {public: Vertification3C() { cout <<"Vertification3C()"<<endl; }};class Sofa : virtual public Furniture , virtual public Vertification3C{private: int a;public: void watchTV(void) { cout<<"watch TV"<<endl; }public: Sofa() { cout <<"Sofa()"<<endl; }};class Bed : virtual public Furniture, virtual public Vertification3C {private: int b;public: void sleep(void) { cout<<"sleep"<<endl; }public: Bed() { cout <<"Bed()"<<endl; }};class Sofabed : public Sofa, public Bed {private: int c;public: Sofabed() { cout <<"Sofabed()"<<endl; }};class LeftRightCom {public: LeftRightCom() { cout <<"LeftRightCom()"<<endl; }};class Date {public: Date() { cout <<"Date()"<<endl; }};class Type {public: Type() { cout <<"Type()"<<endl; }};class LeftRightSofabed : public Sofabed, public LeftRightCom {private: Date date; Type type;public: LeftRightSofabed() { cout <<"LeftRightSofabed()"<<endl; }};int main(int argc, char **argv){ LeftRightSofabed s; return 0;}
结果:
Furniture() /* 先虚拟基类 */Vertification3C()Sofa()Bed()Sofabed()LeftRightCom()Date()Type()LeftRightSofabed()
分析:
Furniture,Vertification3C Furniture,Vertification3CSofa Bed Sofabed LeftRightCom LeftRightSofabed
2、多继承怎么给父类有参构造函数传递参数
使用如下方式:
class LeftRightSofabed : public Sofabed, virtual public LeftRightCom {private: Date date; Type type;public: LeftRightSofabed() { cout <<"LeftRightSofabed()"<<endl; } //给父类传递参数 LeftRightSofabed(char *str1, char *str2, char *str3) : Sofabed(str1), LeftRightCom(str2), date(str3) { cout <<"LeftRightSofabed()"<<endl; }};int main(int argc, char **argv){ LeftRightSofabed s("abc", "2343", "yyy"); return 0;}
阅读全文
0 0
- 10_c++再论构造函数
- 构造函数的继承_C#
- 备忘录_C++_拷贝构造函数
- C#中构造函数和析构函数的用法_C#教程
- C#中构造函数和析构函数的用法_C#教程
- 黑马程序员_学习日记5_C#基础归纳总结之派生类的构造函数
- 20130712_C++ 中的复制构造与赋值运算符函数(1)
- 20130712_C++ 中的复制构造与赋值运算符函数(2)
- 20130712_C++ 中的复制构造与赋值运算符函数(3)
- 黑马程序员_C#面向对象(值类型和引用类型,构造函数,常量与静态成员,命名空间,索引)
- c++构造函数再调用构造函数
- 05_c++构造和析构
- 基础_C# 析构函数
- 再谈构造函数
- 黑马程序员_C语言的函数
- 20170516_C++ 虚函数表解析
- 温故知新----再谈构造函数
- 7.5 构造函数再探
- Appium自动化webdriver.Rmemote中地址来源
- 用Python优雅的做数据分析
- Vuejs全家桶系列(八)--- 组件
- 矩阵翻转
- Eclipse安装反编译插件JadClipse
- 10_c++再论构造函数
- 全字母句
- html5新增标签及属性
- 【整理】Android屏幕适配相关
- servlet单例多线程
- Ubuntu 安装curl
- JQuery 对 Select option 的操作(转)
- (ssl 1203 洛谷 1281)书的复制
- Halide学习笔记----Halide tutorial源码阅读8