C++ 11 委派构造函数

#include <iostream>

using namespace std;
/* 类 Info 1
class Info
{
public:
	Info() :type(1), name('a')
	{
		InitRest();
	}
	Info(int i) : type(i), name('a')
	{
		InitRest();
	}
	Info(char e) : type(1), name(e)
	{
		InitRest();
	}

private:
	int type;
	char name;
	void InitRest(){}
};
*/
//以上 Info()类的代码,是否可以简化呢? 三个构造函数,除了参数和初始化列表不同,函数体都是一样的
//我们可以将一个构造函数设定为 基准版本 ,比如这里的 Info() 版本的构造函数,而其他构造函数可以通过委派 基准版本 来进行初始化
// C++ 11中的委派构造函数,是在构造函数初始化列表位置进行构造和委派的
//我们将上面Info类的代码进行简化

//类 Info 2
/*
class Info
{
public:
	Info()//这是 基准版本 的构造函数 称之为 “目标构造函数”
	{
		InitRest();
	}
	// 所谓委派构造,就是指委派函数,将构造的任务 委派给了目标构造函数来完成这样一种类构造的方式
	Info(int i) : Info() //这个在初始化列表中使用了 基准版本 的构造函数的 构造函数 就称之为 委派构造函数
	{
		type = i;
	}
	// 注意:委派构造函数 不能有初始化列表,所以成员变量要赋初值,必须放在函数体里
	//Info(char e) :Info(), name(e) //这里报错 error C3511: “Info”: 对委托构造函数的调用应仅为成员初始值设定项
	//{

	//}
	Info(char e) : Info()
	{
		name = e;
	}
	void GetType() { cout << "type = " << type << endl; }
private:
	int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值