【C++学习笔记 16】构造函数初始化列表

当编写类并向其中添加成员时,通常需要某种方式对这些成员进行初始化。
常见的方法,如写一个构造函数赋初值

class Entity{
private:
	std::string m_Name;
public:
	Entity() {
		m_Name = "UnKnow";
	}
	Entity(const std::string& name) {
		m_Name = name;
	}
   	const std::string& GetName() const { return m_Name; }
};

另一种方式是使用构造函数初始化列表

class Entity{
private:
	std::string m_Name;
	int m_score;
public:
	Entity()
		:m_Name("UnKnow"), m_score(100)
	{
	}
	Entity(const std::string& name)
	        :m_Name(name);
        {
	}

	const std::string& GetName() const { return m_Name; }
};

需要注意的是,这样写需要保持初始化变量的顺序与成员变量的声明顺序一致.
另外,两种写法的一大区别是,直接构造函数赋值可能造成性能浪费。原因是在成员声明时的代码运行过程,也创建了变量,直接构造函数赋值相当于创建了两次变量,并用后者覆盖前者。而使用初始化列表可以避免这种行为。当然,并非所有情况都是如此,对于整形这种基本类型,他不会被初始化直到显式赋值。


教程来源:The Cherno C++ 教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值