注意::在VS中启用Microsoft本机推荐规则。
我不是在构造器/初始化器列表中初始化数据成员,而是由于数据成员过多,这些数据成员被复制到函数中,然后从构造器中调用函数。
此警告消息是否有任何特定原因。
警告C26495:变量'Person :: m_id'未初始化。始终初始化成员变量(类型6)。
class Person
{
std::string m_name;
int m_id;
/* Other data members*/
public:
Person()
{
initialize();
}
void initialize()
{
m_name = "someText";
m_id = 1;
/* Other data members initialization*/
}
};
答案 0 :(得分:4)
收到警告是因为您没有在构造函数中初始化成员或使用初始化列表。您在函数调用中执行操作的事实不会被“捕获”,因为它不会为每个简单的警告检查而检查每个函数调用。它很快就会变成检查功能的巨大树。
您可能不会收到有关字符串的警告。这是因为当您不对其进行初始化时,它将使用其默认构造函数来构造一个长度为零个字符的空字符串。因此,您的字符串实际上已初始化。但是对于 int 这样的基本类型,没有这样的默认“构造函数”