#include<iostream>
#include<string>
class Entity
{
public:
int m_X, m_Y;
Entity(int x, int y)
{
m_X = x;
m_Y = y;
}
void PrintVal()
{
std::cout << "X: " << m_X << " Y: " << m_Y << std::endl;
}
};
int main()
{
Entity e(1,2);
e.PrintVal();
std::cin.get();
return 0;
}
另一种是在构造函数的{}外面进行初始化成员变量
#include<iostream>
#include<string>
class Entity
{
public:
int m_X, m_Y;
Entity(int x, int y)
:m_X(x), m_Y(y)
{
}
void PrintVal()
{
std::cout << "X: " << m_X << " Y: " << m_Y << std::endl;
}
};
int main()
{
Entity e(1,2);
e.PrintVal();
std::cin.get();
return 0;
}
上诉两种初始化方式在特定情形下性能不同,先说结论,建议在任何时候都使用第二种方式进行初始化。原因如下所示:
上图中在Entity类{}内部初始化Test,则会执行两次Test的构造函数;
上图中在Entity类{}外部初始化Test,则会执行一次Test的构造函数。