警告C26495函数调用从构造函数到初始化变量,原因
Warning C26495 function invocation from constructor to initialize variable, why?
注意:启用Microsoft本机推荐规则vs。
我不是在构造函数/初始化器列表中初始化数据成员,而是由于数据成员太多,这些数据成员被复制在函数中,然后从constructor中调用函数。
此警告消息是否有任何具体原因。
警告C26495:变量'person :: m_id'是不进行的。始终初始化成员变量(type.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*/
}
};
您会获取警告,因为您不在构造函数中初始化成员或使用初始化器列表。您在函数调用中执行此操作的事实不是"捕获",因为它不会检查每个功能调用此简单警告检查。它可能很快成为一个巨大的功能呼叫树,可以检查。
您可能不会收到字符串的警告。这是因为当您不初始化它时,它使用其默认构造函数,该构造构造一个空字符串,长度为零字符。因此,您的字符串实际上是初始化的。但是对于基本类型,例如 int ,没有这样的默认" constructor"
http://www.cplusplus.com/reference/string/string/string/
相关文章:
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 在 C++ 中访问 lambda 捕获初始化变量
- 为什么C++不支持对未初始化变量进行智能分析?
- 使用 clang++ 和 g++ 在C++中初始化变量
- C++使用 lambda 初始化变量
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++ - 输出与初始化变量不同?
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- C++ 中的初始化变量
- C++中未初始化变量的值
- 如何在需要提及需要循环声明的其他类的类中初始化变量?
- 我想知道在构造函数中初始化变量时的生命周期
- 读取恰好具有良好值的未初始化变量
- 如何在 getter 的父类中初始化变量的情况下访问子类中的变量
- 为什么在 c++ 中有多种初始化变量的方法
- 没有参数的默认构造函数是否总是初始化变量?
- 是否可以使用 lambda 初始化变量(删除复制 ctor 时)
- 使用构造函数跳闸UB的新放置后使用初始化变量