class的static成员问题

dwljd 2013-05-30 06:55:37
代码如下:

#include <cstddef>
#include <cstdio>
#include <iostream>
using namespace std;

class TestSS;

class TestStaticMember {
public:
static TestSS* ssptr;
};

TestSS* TestStaticMember::ssptr = NULL;

class TestSS{
private:
int version;

public:
TestSS(){
version = 1;
cout << "TestSS constructor..." << endl;
}

~TestSS(){
cout << "TestSS deconstrcutor..." << endl;
//delete version;
}

void setVersion(const int ver){
version = ver;
}

int getVersion() const {
return version;
}
};

void init(){
TestSS ss;
TestStaticMember::ssptr = &ss;
ss.setVersion(111);

printf("In init: %p, %p\n", &ss, TestStaticMember::ssptr);
cout << "In init: " << TestStaticMember::ssptr->getVersion() << endl;
}


int main(int argc, char** argv){

init();

printf("In main: %p\n", TestStaticMember::ssptr);
cout << "In main: " << TestStaticMember::ssptr->getVersion() << endl;

return 0;
}

为什么在ss对象析构后,在main里面还能访问TestStaticMember::ssptr指向的对象??
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dwljd 2013-05-30
  • 打赏
  • 举报
回复
我之前是认为访问到的值一定会发生变化了,原来是不定行为。非常感谢!

65,208

社区成员

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

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