C++新特性04_面向对象_委托构造和继承构造(委托构造:构造函数可以在同一个类中一个构造函数调用另一个构造函数;继承构造:利用关键字 using,子类直接调用父类的构造进行构造 )

本篇及下篇介绍面向对象的内容,在C++中,面向对象是很重要的模块,可以说是撑起了C++的核心,新语法中也有适当的加强,但是本质没有变化。为了代码可读性更强或者更加方便,增加的小语法。

C++新特性04_面向对象_委托构造和继承构造

1.委托构造

C++ 11 引入了委托构造的概念,这使得构造函数可以在同一个类中一个构造函数调用另一个构造函数,从而达到简化代码的目的:


#include <iostream>

class Base {
public:
	int value1;
	int value2;
	float value3;

	//无参默认构造
	Base() 
	{
		value1 = 1;
	}
	
	//int参数构造 
	//在执行int参数构造函数时执行无参默认构造的写法
	//只能执行或者说":"之后只能写一种构造函数
	Base(int value) : Base()
	{  
		// 委托 Base() 构造函数
		value2 = 2;
	}
};

int main() {
	Base b(2);
	std::cout << b.value1 << std::endl;
	std::cout << b.value2 << std::endl;
}

运行结果:
在这里插入图片描述

2. 继承构造

在传统 C++ 中,构造函数如果需要继承是需要将参数一一传递的,这将导致效率低下。C++ 11 利用关键字 using 引入了继承构造函数的概念:子类直接调用父类的构造进行构造

class SubClass:public Base
{
public:

    //直接使用父类的构造
	using Base::Base;

private:

};

使用委托构造中的程序,进行补充


#include <iostream>

class Base {
public:
	int value1;
	int value2;
	float value3;

	//无参默认构造
	Base() 
	{
		value1 = 1;
	}

	//int参数构造 
	//在执行int参数构造函数时执行无参默认构造的写法
	//只能执行或者说":"之后只能写一种构造函数
	Base(int value) : Base()
	{  
		// 委托 Base() 构造函数
		value2 = 2;
	}
};

class SubClass:public Base
{
public:

    //直接使用父类的构造
	using Base::Base;
     //客户端如果是是对子类的写法也是对父类构造的值赋值,就可以直接利用父类的构造
     //子类采用父类同样的构造方式对值进行构造
     //SubClass(int v){
     //value2=v;
     //}

private:

};


int main() {
	SubClass s(1);
	Base b(2);
	std::cout << s.value1 << std::endl;
	std::cout << s.value2 << std::endl;
}

运行结果:
在这里插入图片描述
在这里插入图片描述

3.学习视频地址:委托构造和继承构造

4.学习笔记:委托构造和继承构造学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值