菜鸟问问题~

jiangchaomr 2011-08-10 10:31:12
好久没来了,直接上问题~
问题比较多,希望大家海涵~
1. const 变量可以定义在头文件中(因为他默认为局部变量),那么在其他文件中包含该头文件时,那么这些文件中的const变量是分配多个内存还是一个内存,还是编译器直接不分配内存直接将该变量使用具体指代替呢?
2. 为什么static成员不能在类定义体中初始化,不是所有对象都共享静态成员吗?
3. const static成员可以在类定义体内直接赋值,例如:

class Game
{
Static const int num = 12;
}

Effective c++上说这是一个申明,但我在vs2010中编译时发现编译器认为他是一个定义,究竟哪种是正确的?
4. 另外有谁见过关于一些变量内存分配的帖子可以发给我看看,谢了。
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfz_1991 2011-08-11
  • 打赏
  • 举报
回复
第一个问题:关于const在头文件中,其他文件包含时,这个时候是要看调用这个const的具体使用方式,比如说我放在vector类中,那么内存可能就不能分配,如果我放在list,可能就要分配。是要看具体使用的。(这个是个人理解,如果不对,不要骂我哈。呵呵)

第二个问题:因为static数据成员不像普通的数据成员,static成员不是通过类的构造函数进行初始化,你想想,如果我们在类初始化static,然后由于类在使用默认的构造函数,那么给一个数据成员赋两个初值,想想也知道不可行。

第三个问题,一般而言,类的static成员,不能在类的定义中初始化,但是只要初始化的static成员是一个常量表达式,那么就可以在类的定义中进行初始化。但是这样使用的时候你要明白一点,就是即使是你在类的定义中初始化了,那么该数据成员仍然必须在外部定义。
jiangchaomr 2011-08-11
  • 打赏
  • 举报
回复
先冒一下~
jiangchaomr 2011-08-10
  • 打赏
  • 举报
回复
那看来是我多想了啊
zhugay 2011-08-10
  • 打赏
  • 举报
回复
不知道原因,怎样正确就怎样用。
jiangchaomr 2011-08-10
  • 打赏
  • 举报
回复
木有人回帖吗?
乔巴好萌 2011-08-10
  • 打赏
  • 举报
回复
1) 第一个好像是一个原则 叫ONce defined 好像这么拼 只要定义过一次 并且后面的引用是一致的 是OK的
2)这个是约定,具体为啥 偶也不清楚
3)这个是针对const而言的 已经分配空间了 应该算定义吧

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧