C++中子类构造函数写法总结
来源:互联网 发布:虚拟主机数据库在哪里 编辑:程序博客网 时间:2024/06/05 14:32
构造方法是用来初始化类对象的。如果在类中没有显式地声明构造函数,那么编译器会自动创建一个默认的构造函数;并且这个默认的构造函数仅仅在没有显式地声明构造函数的情况下才会被创建.构造函数与父类的其它成员(成员变量和成员方法)不同,它不能被子类继承。因此,在创建子类对象时,为了初始化从父类中继承来的成员变量,编译器需要调用其父类的构造函数。如果子类的构造函数没有显示地调用父类的构造函数,则默认调用父类的无参构造函数.显示调用:1.父类没有声明构造函数 (1)子类也没有声明自己的构造函数,则父类和子类均由编译器生成默认的构造函数。 (2)子类中声明了构造函数(无参或者带参),则子类的构造函数可以写成任何形式,不用顾忌父类的构造函数。在创建子类对象时,先调用父类默认的构造函数(编译器自动生成),再调用子类的构造函数。2.父类只声明了无参构造函数 如果子类的构造函数没有显式地调用父类的构造,则将会调用父类的无参构造函数。也就是说,父类的无参构造函数将会被隐式地调用。3.父类只声明了带参构造函数 在这种情况下,要特别注意。因为父类只有带参的构造函数,所以如果子类中的构造函数没有显示地调用父类的带参构造函数,则会报错,所以必需显示地调用。例:class animal { protected: //成员变量,声明为protected或者public,这里选择protected int height; //若声明为private,则不能被子类继承访问,会报错 int weight; public: animal(int height,int weight) //带参的构造函数 { this->height=height; this->weight=weight; cout<<"animal的带参构造函数被调用"<<endl; } virtual ~animal() { cout<<"animal的析构函数被调用"<<endl; } }; //子类 class fish:public animal { public: fish():animal(height,weight) //显示调用父类的构造函数 { cout<<"fish的构造函数被调用"<<endl; } virtual ~fish() { cout<<"fish的析构函数被调用"<<endl; } };
阅读全文
0 0
- C++中子类构造函数写法总结
- C++中子类构造函数写法总结
- C++中子类构造函数写法总结
- C++继承中关于子类构造函数的写法
- C++继承中关于子类构造函数的写法
- C++继承中关于子类构造函数的写法
- C++继承中关于子类构造函数的写法
- 【c++】友元关系和子类函数构造函数的写法
- [C++]子类的构造函数
- Java中子类调用父类构造函数总结
- c++中子类的构造函数
- 在子类构造函数中使用super()
- Java继承中调用子类构造函数
- C++中子类的构造函数
- C++继承中关于子类构造函数
- 在C 中子类继承和调用父类的构造函数方法
- C++ 子类构造函数
- 子类构造函数
- 状压DP<旅行商问题>
- Vue.js自定义下拉列表,如何实现在下拉列表区域外点击即可关闭下拉列表的功能
- 初学-HTML
- PCL_超体聚类实现
- (一) CentOS7下RPM安装MYSQL-5.7.18
- C++中子类构造函数写法总结
- 排序算法C++ && Python实现---堆排序
- 计蒜客 商汤科技的行人检测(困难)
- Effective Java
- 如何在word文档中插入参考文献,并管理参考文献
- wcftestclient.exe测试WCF服务
- 利用分治法解决凸包问题
- ASIC设计中各个阶段需要注意的问题
- C++ 知识点