C++入门经典-例8.3-子类显示调用父类构造函数
1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用。
无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数。若想使用父类带参数的构造函数,则需要显式的方式。
2:代码如下:
- // 8.3.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class CEmployee //定义CEmployee类
- {
- public:
- int m_ID; //定义数据成员
- char m_Name[]; //定义数据成员
- char m_Depart[]; //定义数据成员
- CEmployee(char name[]) //带参数的构造函数
- {
- strcpy(m_Name,name);
- cout << m_Name<<"调用了CEmployee类带参数的构造函数"<< endl; //输出信息
- }
- CEmployee() //无参构造函数
- {
- strcpy(m_Name,"MR");
- cout << m_Name<<"CEmployee类无参构造函数被调用"<< endl; //输出信息
- }
- ~CEmployee() //析构函数
- {
- cout << "CEmployee类析构函数被调用"<< endl; //输出信息
- }
- };
- class COperator :public CEmployee //从CEmployee类派生一个子类
- {
- public:
- char m_Password[];//定义数据成员
- COperator(char name[ ]):CEmployee(name) //显示调用父类带参数的构造函数。注意格式,自己的构造函数:父类的构造函数
- { //设置数据成员
- cout << "COperator类构造函数被调用"<< endl; //输出信息
- }
- COperator():CEmployee("JACK") //显示调用父类带参数的构造函数
- { //设置数据成员
- cout << "COperator类构造函数被调用"<< endl; //输出信息
- }
- ~COperator() //析构函数
- {
- cout << "COperator类析构函数被调用"<< endl; //输出信息
- }
- };
- int main(int argc, char* argv[]) //主函数
- {
- COperator optr1; //定义一个COperator对象,调用自身无参构造函数
- COperator optr2("LaoZhang"); //定义一个COperator对象,调用自身带参数构造函数
- return ;
- }
运行结果:
C++入门经典-例8.3-子类显示调用父类构造函数的更多相关文章
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数
上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...
- c++继承构造子类调用父类构造函数的问题及关于容器指针的问题及当容器里储存指针时,记得要手动释放
看下面的一个问题: class Person { private: string name; public: Person(const string& s=""){ nam ...
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,在pyth ...
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...
- 【转】子类会调用父类的@PostConstruct方法
如果一个类用@Service或@Component,那么只需要用@PostConstruct修饰某个方法,该方法能在类实例化的过程中自动执行,相当于类的构造函数.同时,具备了构造函数不具备的功能. @ ...
- 通过supper()有参构造器,完成子类对象调用父类属性的方法,并完成赋值
package com.Summer_0426.cn; /** * @author Summer * 通过supper()有参构造器,完成子类对象调用父类属性的方法,并完成赋值 * */ public ...
- 在子类中调用父类的方法super
1.没有super之前,在子类里面需要父类里面的逻辑,但是我们是通过派生(自己定义了一个init,增加了一条line) class vehichle:#定义一个交通工具的类 Country=" ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- Java子类初始化调用父类无参构造
实在是服了自己,子类初始化调用父类无参构造这种初学者都应该知道的事,我给忘了. 记得当初看书的时候各种概念抄在笔记本上,再上机实践,以为一辈子都不会忘,还是给忘了. 这件事说明了两个问题: 1.我没有 ...
随机推荐
- springBoot2.x 支持跨域请求配置
提供三种配置方式: 1.配置过滤器,实现 WebMvcConfigurer接口(springboot2.x的方式) @Configuration public class GlobalCorsConf ...
- vue创建项目步骤
# 全局安装 vue-cli $ npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 $ vue init webpack my-project ...
- jsp引入文件时候经常遇到的${ctx}
jsp引入文件时候经常遇到的${ctx} 在jsp页面中经常见到这样的代码: <script type="text/JavaScript" src="${ctx}/ ...
- ASE19团队项目alpha阶段model组 scrum1 记录
本次会议于11月1日,19时整在微软北京西二号楼13478召开,持续15分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing Wu, Yu ...
- 解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾
Hibernate 5.3.1 INFO: HHH000206: hibernate.properties not foundException in thread "main" ...
- linux命令详解——iostat
简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和时间 ...
- kubesphere-wokespaces
kubesphere - workspaces 详解: workspaces :企业空间 登陆kubesphere后,会看到一个默认的企业空间 " system-workspace &q ...
- BLE 5协议栈-通用访问规范层(GAP)
文章转载自:http://www.sunyouqun.com/2017/04/ 通用访问规范GAP(Generic Access Profile)是BLE设备内部功能对外的接口层,它规定了三个方面:G ...
- windows下用navicat链接虚拟机MySQL数据库的过程和问题解决
navicat远程连接虚拟机中的MySQL数据库 1.在linux查看mysql服务器IP地址 ifconfig 记住此IP navicat设置 设置完毕 遇到问题 一直连不上,在网上搜索了一下,主要 ...
- C++第四次作业--继承与派生
C++ 继承 面向对象程序设计中最重要的一个概念是继承.继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易.这样做,也达到了重用代码功能和提高执行效率的效果. 当创建一个类时 ...