首页 新闻 搜索 专区 学院

Effective C++ 条款2的疑问?

0
悬赏园豆:20 [已解决问题] 解决于 2012-10-22 18:37
 1 class GamePlayer
 2 {
 3 public:
 4     static const int NumTurns = 5;
 5     int scores[NumTurns];
 6 };
 7 int main()
 8 {
 9     const int *pint = &GamePlayer::NumTurns;
10     cout << *pint << endl;
11     
12     system("pause");
13 }

书上说你所看到的是NumTruns的声明而非定义式,而且不去地址的话就不用定义,如果取地址的话就额外定义。但是我在main中取地址也没有错误啊?这是为什么啊?是我那个地方理解错误了?

CodingMan的主页 CodingMan | 初学一级 | 园豆:111
提问于:2012-10-19 09:31
< >
分享
最佳答案
0

这个应该是C++标准未明确规定的地方吧

C++ primer上说只要是静态常量成员就可以在类的定义体中初始化,但实际上VC中只允许静态常量整型数据在类中初始化。

C++ primer上说就算是静态常量成员在类的定义体中初始化了,也要在类的定义体之外进行定义,但实际上VC中静态常量整型数据在类中初始化一次就可以了。

收获园豆:15
花无形 | 菜鸟二级 |园豆:279 | 2012-10-20 00:42

谢谢了,也就是说这个跟编译器是有关系的?

CodingMan | 园豆:111 (初学一级) | 2012-10-20 10:57

@CodingMan: 我认为是这样的,但是我没有在别的编译器上试过。

还是养成习惯,静态成员都不在类定义体中初始化比较好。

花无形 | 园豆:279 (菜鸟二级) | 2012-10-20 11:34
其他回答(1)
0

effective C++条款2 说的是取private常量的情况,而你的代码中NumTurns是public的

收获园豆:5
睿酷 | 园豆:211 (菜鸟二级) | 2012-10-19 10:25

嘿嘿 喔输错了 但是改成private 之后肯定不能访问 啊   那个跟static 什么关系啊?

支持(0) 反对(0) CodingMan | 园豆:111 (初学一级) | 2012-10-19 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册