关于静态成员变量的问题

austin_minny 2010-11-23 11:48:27
class MyClass
{
public:
static int m;
};

int MyClass::m = 100;
int _tmain(int argc, _TCHAR* argv[])
{
//int MyClass::m = 100;若声明再这里就报链接错误??
cout<<MyClass::m<<endl;
int m;
}

如代码所示,为什么把那个静态成员声明在main函数里面就出错呢?一般的静态变量不都没问题的吗?
...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
austin_minny 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hai040 的回复:]
规定

这是定义,不是声明,要分清楚
[/Quote]

那为何一定要定义在main外面?我在main里面写这样得语句:static int kkk = 0;不就没错?那静态成员为何不行,有何不同,规定一定要定义在main外面?
austin_minny 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goonyangxiaofang 的回复:]
如果在 main 外定义一个 MyClass 的对象,并修改了 m

当进入 main 是你在初始化 m,前面修改的 m 就无效了
[/Quote]
额,我没说清楚我的问题,我的问题是:我把 int MyClass::m = 100;这句语句加在main外,程序没问题,但是把它放在main之内,就链接错误了,说m是unresolved external symbol,我就想知道为什么一定得声明在main外面?
hai040 2010-11-23
  • 打赏
  • 举报
回复
规定

这是定义,不是声明,要分清楚
GoonYangXiaofang 2010-11-23
  • 打赏
  • 举报
回复
如果在 main 外定义一个 MyClass 的对象,并修改了 m

当进入 main 是你在初始化 m,前面修改的 m 就无效了
austin_minny 2010-11-23
  • 打赏
  • 举报
回复
最后那个int m我不小心加上的,请忽略
gules 2010-11-23
  • 打赏
  • 举报
回复
分清“全局静态变量”、“局部静态变量”、“类成员静态变量”。

64,649

社区成员

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

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