#include <iostream>
using namespace std;
class T1
{
const int t = 100;
public:
T1()
{
cout << "T1 constructor: " << t << endl;
}
};
当我试图用100来初始化常量成员变量t
时。但它给了我以下错误。
test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static
我怎样才能初始化一个const
值?
const
变量指定了一个变量是否可以修改。每次引用该变量时都会使用指定的常量值。分配的值在程序执行过程中不能被修改。
Bjarne Stroustrup'的解释对其进行了简单的总结。
一个类通常在头文件中声明,一个头文件通常被包含在许多翻译单元中。然而,为了避免复杂的链接器规则,C++要求每个对象都有一个唯一的定义。如果C++允许对需要作为对象存储在内存中的实体进行类内定义,那么这一规则将被打破。
一个const
变量必须在类内声明,但它不能在类内定义。我们需要在类外定义const变量。
T1() : t( 100 ){}
这里的赋值t = 100
发生在初始化器列表中,远远早于类的初始化。