C++ static、const对象声明与定义 问题来源?
问题源自书《C++primer》(第四版·特别版)。
书401页下面注意中写道:
const static 数据成员在类的定义体中初始化时,该数据成员仍必须在类的定义体之外进行定义。
书402页页首写道:
在类内部提供初始化时,成员的定义不必在指定初始值:
参看代码是:
class Account{
...
private:
static const int period = 30;
...
};
类体外的定义:
const int Account::period;
就这里开始,自己写了一个class,类体中提供了const static的初始值,在类的实现文件中定义这个成员是就出现了错误:
类似:
static int const TestClass::m_cnsta_var" (?m_cnsta_var@TestClass@@0HB) already defined in demo_static.obj
但是有一个例子就可以很好的走:
不过这个例子是在一个文件中。
其实我的疑问就是:
《C++primer》上说的在类体外定义,说的是在类定义体外还是在类的作用域之外?
在类体之外,可以是在实现文件中,但是不行!
在类作用域之外?即就是在main函数所在文件中(在此处就三个文件)。再次编译错误与上面的一样。
那书上的这个是什么意思?不解。。。