当编写类并向其中添加成员时,通常需要某种方式对这些成员进行初始化。
常见的方法,如写一个构造函数赋初值
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++ 教程
标签:std,const,Name,16,C++,Entity,string,构造函数 From: https://blog.csdn.net/m0_59669215/article/details/141107363