另外我们在使用第二种方式的时候要注意:

1.如果没有定义派生类的构造函数,那么将默认执行基类的构造函数.
2.如果派生类要向基类传递参数,那么必须在派生类里定义一个构造函数,该函数只起到向基类传递参数的作用
3.如果只需要调用基类的构造函数,不用向基类传递参数的话,那么派生类不用定义构造函数

第一种方式:

#include <iostream>
#include <string>using namespace std;class father
{
protected:string name;int tall;
public:father(string a, int i);father(){cout << "构造基类" << endl;}void print(){cout << name << "身高为: " << tall << endl;}~father(){cout << "释放基类对象" << endl;}
};father::father(string a, int i)
{cout << "在基类的构造函数内" << endl;name = a;tall = i;print();cout << "离开基类的构造函数" << endl;
}class son : public father
{
private:int weight;
public:son(string a, int i, int j);void print1();~son(){cout << "释放子类对象" << endl;}
};son :: son(string a, int i, int j)
{name = a;tall = i;weight = j;cout << "在子类的构造函数内" << endl;
}void son::print1()
{father ::print();cout << "体重: " << weight << endl;
}int main()
{son mike("Mike", 180, 80);mike.print1();cout << "程序结束" << endl;system("pause");return 0;
}

第二种方式:

#include <iostream>
#include <string>using namespace std;class father
{
protected:string name;int tall;
public:father(string a, int i);father(){cout << "构造基类" << endl;}void print(){cout << name << "身高为: " << tall << endl;}~father(){cout << "释放基类对象" << endl;}
};father::father(string a, int i)
{cout << "在基类的构造函数内" << endl;name = a;tall = i;print();cout << "离开基类的构造函数" << endl;
}class son : public father
{
private:int weight;
public:son(string a, int i, int j);void print1();~son(){cout << "释放子类对象" << endl;}
};son :: son(string a, int i, int j):father(a, i) // 执行带参的构造函数
{weight = j;cout << "在子类的构造函数内" << endl;
}void son::print1()
{father ::print();cout << "体重: " << weight << endl;
}int main()
{son mike("Mike", 180, 80);mike.print1();cout << "程序结束" << endl;system("pause");return 0;
}

向基类构造函数传递参数的(两种方法)相关推荐

  1. jmeter跨线程组传多个值_Jmeter 跨线程组传递参数 之两种方法(转)

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  2. Android开发之fragment传递参数的两种方法

    非常简单一种是通过bundle,另外一种是通过fragment提供的instantiate(过时方法),都是kotlin版本,直接上代码吧: 方法一: //fragment传递参数方法一val fra ...

  3. vue 获取请求url_vue 获取url里参数的两种方法小结

    我就废话不多说了,大家还是直接看代码吧~ 第一种: const query = Qs.parse(location.search.substring(1)) let passport = query. ...

  4. java重定向url有参数吗_JavaScript重定向URL参数的两种方法小结

    这篇文章主要介绍的是JavaScript重定向URL参数的两种方法,下面话不多说,直接看示例代码. 一.字符拼接形式 function setUri(para, val) { var strNewUr ...

  5. Asp.net页面之间传递参数的几种方法

    Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx:    protected void Button1_Clic ...

  6. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...

  7. 关于EL表达式获取参数的两种方法

    今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久. 首先在看遇到的问题: 在浏览器地址输入,表示传入一个参数test,值为123 http://localhost ...

  8. Asp.net页面之间传递参数的几种方法荟萃

    第一种方法: 通过URL链接地址传递  send.aspx:   protected void Button1_Click(object sender,EventArgs e)     {       ...

  9. Flink获取外部传递参数的两种方式

    目录 一.前言 二.实现 2.1 通过参数方式直接传递 2.2 通过配置文件来获取参数值 一.前言 在Flink中,我们会对接Kafka,Kafka的参数比较多,如果我们希望通过灵活的方式修改参数,而 ...

最新文章

  1. three相机在模型上_基于 three.js 的 3D 粒子动效实现
  2. CSDN-屏蔽广告详细方法 仅对谷歌浏览器有效!
  3. 【Unity 3D】学习笔记三十六:物理引擎——刚体
  4. 高压小功率三极管 MFV13001
  5. 计算机系学生thinkbook,ThinkBook系列性能差,只能当一台学习机?其实它只是专注于办公...
  6. github 修改项目为public_在GitHub上为开源项目做贡献
  7. java 数组 树_java使用顺序数组实现二叉树
  8. 如何设置共享Mac上的视频、音乐或照片的教程
  9. 2000w mysql_MySQL数据库优化(基于酒店2000w条数据)
  10. 清明节到五一的加班感触
  11. cmd下批量pingIP地址
  12. 【那些年学过的计算机基础】--计算机发展史(图片版)
  13. L2-029 特立独行的幸福 (25 分) 搜索回溯
  14. PHP strpos
  15. 基于CS的脉冲GPR成像技术研究(20111)
  16. 1e9个兵临城下 - 容斥原理
  17. kafka-eagle数据库脚本,表结构和数据
  18. 描绘软件结构的图形工具:层次图和结构图(层次图和层次方框图的区别)
  19. 移动安全工具-dex2jar
  20. Ubuntu安装qt4.8

热门文章

  1. 创建角色和ansible-galaxy简单使用
  2. 深信服AD应用交付基础介绍
  3. Android开发-应用中英文(语言)切换(二)
  4. 【ACWing】2572. 生成魔咒
  5. 说一说物理中的dynamics和kinetics
  6. 曲率流的计算机应用,基于曲率法线流的树点云骨架提取方法.PDF
  7. @Value取application.properties文件中的值
  8. FGC的发生场景及排查
  9. L1-8. 最佳情侣身高差
  10. Maven使用与各配置项详解