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

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. MyISAM与InnoDB的索引实现
  2. 世界视频编码器大赛结果出炉,腾讯香农编码器跻身世界一流
  3. elisa数据处理过程图解_ELISA原理示意图详解.ppt
  4. HDU-3460 Ancient Printer 字典树
  5. LeetCode刷题(20)
  6. 云时代下,移动云揭秘数据库“新解”
  7. 计算机专业c语言讲解,1计算机科学与技术专业本科C语言程序设计期末复习题1讲解.doc...
  8. VB2010(3)整型运算
  9. 安装了jdk和jre无法打开jar文件(测试过多个jdk版本和win系统,绝对百试百灵)
  10. 软件测试流程图及描述
  11. Instagram for Business Instagram商业技巧 Lynda课程中文字幕
  12. 普林斯顿陈丹琦:如何让「大模型」变小
  13. 激光雷达类型分类,知名激光雷达公司介绍,三角测距激光雷达与TOF激光雷达原理
  14. javaWeb连接数据库实现简单的登陆注册功能
  15. 中国睡眠经济行业发展格局与投资策略规划建议报告2022-2027年
  16. 内存卡坏了怎么修复?内存卡恢复也不难
  17. python cls方法_python – cls()函数在类方法中做了什么?
  18. 打印表格用什么软件好?
  19. Android性能优化之APK瘦身详解(瘦身73%)
  20. 20221208 浪客剑心 追忆篇

热门文章

  1. 《Structure-Invariant Testing for Machine Translation》笔记
  2. 外贸企业邮箱购买多少钱?最好用的中国企业邮箱品牌
  3. 华三网络设备打热补丁教程
  4. 解决 win10 Microsoft store 应用商店打不开,错误代码0x80072EFD
  5. CPU飙高和内存飙高的一般处理步骤
  6. aircrack和reaver破解路由器PIN码
  7. Matlab输出内容到Excel的方法(WPS可用)
  8. 技术解析韵达快递,支撑业务生命线高效流转的底层逻辑
  9. PHP: Redis客户端predis/predis
  10. eclipse中run as无run as server选项的解决方案