为什么可以';我在结构构造函数中赋值常量int吗? 为什么我不能在C++中这样做?< /P> struct SomeStruct { public: SomeStruct(const int someInt) { m_someInt = someInt; } private: const int m_someInt; };
私有字段是否应该是一个正则整数?您正在将为什么可以';我在结构构造函数中赋值常量int吗? 为什么我不能在C++中这样做?< /P> struct SomeStruct { public: SomeStruct(const int someInt) { m_someInt = someInt; } private: const int m_someInt; };,c++,C++,私有字段是否应该是一个正则整数?您正在将someInt赋值给m_someInt,这是非法的。但是初始化是可以的 struct SomeStruct { public: SomeStruct(const int someInt) : m_someInt(someInt) { } private: const int m_someInt; }; 更多信息:值不能分配给常量存储。它只能初始化。对于类成员变量,它将在初始化列表中完成 struct SomeStruc
someInt
赋值给m_someInt
,这是非法的。但是初始化是可以的
struct SomeStruct
{
public:
SomeStruct(const int someInt) : m_someInt(someInt)
{
}
private:
const int m_someInt;
};
更多信息:值不能分配给
常量
存储。它只能初始化。对于类成员变量,它将在初始化列表中完成
struct SomeStruct
{
public:
SomeStruct(const int someInt) : m_someInt(someInt)
{
}
private:
const int m_someInt;
};
有时,类内初始化就足够了:
template <int Val>
struct SomeStruct
{
public:
private:
const int m_someInt = Val;
};
在你的例子中,
m_someInt=someInt
是一个在=
之前需要左值的语句,m_someInt
不是一个合法的左值,因为它是const
const
成员只能在成员初始值设定项列表中初始化:(或使用C++11之后的默认值)不能分配给const int
,句点。如果你不希望你的私有字段是常量,不要让它成为常量。这也是为什么你不能做const int i;i=1代码>
// 1) Declaring storage of int object that initially contains value 5
int a = 5; // It's a declaration.
// 2) Declaring storage of int object that contains undetermined value
int b; // Declaration
b = 5; // Assigning a value to it. It's a statement.