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函数所在文件中(在此处就三个文件)。再次编译错误与上面的一样。

 

那书上的这个是什么意思?不解。。。

posted @ 2011-06-29 08:41  Podevor  阅读(135)  评论(0编辑  收藏  举报