警告C26495函数调用从构造函数到初始化变量,原因

Warning C26495 function invocation from constructor to initialize variable, why?

本文关键字:初始化 变量 原因 构造函数 C26495 函数调用 警告      更新时间:2023-10-16

注意:启用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/