在C++
中,在private
定义之外初始化class
访问变量是否有效?
class Test
{
private: int a;
public: int b;
}
int Test::a = 1;
答案 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 ,您可以将其设置为静态。你这么做,你可以像你说的那样初始化它。