C++中类的静态、常量、引用成员变量的初始化
创始人
2025-05-31 23:43:29

1、类的静态成员变量,必须在类外再声明一次

这是因为类内的声明只是描述了类的成员变量和成员函数的类型,而不为它们分配内存空间,因此需要在类外声明一次静态成员变量以分配内存空间。
例如,假设有一个类定义如下:

class MyClass 
{
public:static int myStaticVar;
};

则需要在类外定义静态成员变量myStaticVar:

	int MyClass::myStaticVar;

这样,myStaticVar 就被分配了内存空间。注意,定义时不能使用static关键字,否则会导致编译错误。当然最好是在声明的时候直接赋予初值

	int MyClass::myStaticVar = 0;

否则没有赋予初值的话,一般还要定义一个静态成员函数Init()来做初始化

例如,假设有一个类定义如下:

class MyClass {
public:static int myStaticVar;void init() {myStaticVar = 42;}
};
int MyClass::myStaticVar;

但是需要注意的是,静态成员变量只能被初始化一次,因此需要确保在整个程序中只有一次初始化。

2、类的常量或引用成员变量只能在初始化列表中初始化

正确做法如下

class MyClass {
public:MyClass(int value1, int& value2): myConstVar(value1), myRefVar(value2) {// myConstVar = value;  // error: assignment of read-only member 'MyClass::myConstVar'}private:const int myConstVar;int& myRefVar;
};

如果尝试在构造函数内部进行初始化会报错

相关内容

热门资讯

陈忠实:母亲的麦饭 按照当今已经注意营养分析的人们的观点,麦饭是属于真正的绿色食物。 我自小就有幸享用这种绿色食物。不过...
出圈!年夜饭外卖搜索量暴涨超6... 🎉 随着春节的临近,年夜饭成为了每个家庭的重要议题。你是否也在为如何准备一顿丰盛的年夜饭而感到困扰?...
质量好的干咽酸奶订制厂家排名前... 在乳制品行业蓬勃发展的今天,干咽酸奶凭借其独特的风味和便携性逐渐成为消费新宠。选择一家可靠的定制厂家...
春节不打烊!这支年轻烘焙队,把... 中国商报(记者 冉隆楠 文/图)在春节前夕的忙碌节奏中,超市俨然是年货选购的主要“战场”。为了满足大...
丁欣荣||过年蒸馒头:从蒸多蒸... 腊月的寒风掠过乡村,总会裹挟着不同时代的馒头香气。这香气里,藏着中国农民半个多世纪的生活密码,从蒸多...