在初始化列表中初始化c++静态数据成员
C++ static data members initialization in initialization list
为什么静态数据成员不能在构造函数的初始化列表中初始化,而可以在构造函数的定义中初始化呢?
你错了。它们可以在类定义之外的单个翻译单元中初始化*,也可以在构造函数中将赋值给。
只能在构造函数的初始化列表中初始化当前的非static
类成员。
<子> *例外适用子>
静态成员在类范围内,即它们是类变量而不是实例变量。我们通过构造函数初始化实例。因为静态变量不是针对实例的,而是针对整个类的,所以静态变量不是由构造函数初始化的。由于
让我们试试这个更具体的
#include <iostream>
using namespace std;
class classWithStaticVariable
{
static int aStaticVariable;
int aNormalInstanceVariable;
public:
classWithStaticVariable(int aParameter)
{
aNormalInstanceVariable=aParameter;
aStaticVariable=aNormalInstanceVariable;/////It is possible to assign value to static data member in constructor but not possible to init it.
}
void aTestFunctionJustToPrint()
{
cout<<aStaticVariable<<aNormalInstanceVariable;
}
};
int classWithStaticVariable::aStaticVariable=1;
int main()
{
classWithStaticVariable t(2);
t.aTestFunctionJustToPrint();
}
静态变量是类变量,而不是实例变量。所以这些静态变量必须用类定义初始化。同样,构造函数用于在创建对象时初始化对象的实例变量。这一切。由于 相关文章:
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- "local scope"中的 C++ 初始化静态变量
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 未调用的初始化静态thread_local结构的构造函数和析构函数
- 如何在 C++ 中使用 NULL(或 0)初始化静态字符数组
- 如何从静态类函数初始化静态类对象
- C++:用IIFE线程初始化静态局部变量安全吗
- 如何在 c++ 中初始化静态类对象?
- 使用 lambda 初始化静态数组
- 使用 lambda 函数初始化静态数据成员
- 如何从 std::integer_sequence 初始化静态数组?
- 在构造函数中初始化静态函数指针
- C - 初始化静态成员的方法
- 大括号使用枚举类初始化静态常量unordered_map
- C++ main 函数中初始化静态变量
- 在定义(.cpp文件)中初始化静态浮点 constexpr 成员是可能的
- 错误 C2864:'element::next':只能在类 (STRUCT) 中初始化静态常量整数数据成员
- 我应该使用类内发起器初始化静态常量数据成员还是在其类外的定义中初始化静态常量数据成员
- 如何在运行时使用静态成员函数初始化静态成员变量
- 与其他静态const成员初始化静态常量成员