初始化私有访问变量

时间:2014-06-24 18:56:01

标签: c++ class initialization private

C++中,在private定义之外初始化class访问变量是否有效?

class Test
{
    private: int a;
    public:  int b;
}

int Test::a = 1;

3 个答案:

答案 0 :(得分:0)

"初始化私有访问变量是否有效......就像这样?"

没有。如果要为Test的每个实例初始化该变量,请在构造函数中执行此操作。

class Test
{
    Test() : a{1} {}
    private: int a;
    public:  int b;
}

答案 1 :(得分:0)

您问题中的示例无效。如果成员变量是static,您可以像在示例中一样初始化它。如果成员变量 static,则应在构造函数或类定义中初始化。

无论访问权限是什么,并且变量以相同的方式初始化,无论它们是公共的,受保护的还是私有的,都无关紧要。

struct Foo
{
    Foo() : a{1} // ctor-initializer
    {
        b = 2; // ctor body
    }  
    int a;
    int b;
    int c = 3;  // At definition.
};

答案 2 :(得分:0)

如果您希望类Test的所有实例共享变量 a ,您可以将其设置为静态。你这么做,你可以像你说的那样初始化它。