BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #47804同步于 2010/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

初学C++,求解释,谢谢……

heshanshan
2010/12/15镜像同步9 回复
#include<iostream> using namespace std; class MyClass { public: MyClass(){++count;} ~MyClass(){--count;} static int getCount(){return count;} private: static int count; }; int MyClass::count=0; int main() { MyClass obj; MyClass a; cout<<obj.getCount(); cout<<a.getCount(); MyClass *ptr=new MyClass; cout<<MyClass::getCount(); delete ptr; cout<<MyClass::getCount(); system("pause"); return 0; } 输出为什么是:2232而不是1232?谢谢…… 但是,如果改成 // C++练习.cpp : Defines the entry point for the console application. // #include<iostream> using namespace std; class MyClass { public: MyClass(){++count;} ~MyClass(){--count;} static int getCount(){return count;} private: static int count; }; int MyClass::count=0; int main() { MyClass obj; cout<<obj.getCount(); MyClass a; cout<<a.getCount(); MyClass *ptr=new MyClass; cout<<MyClass::getCount(); delete ptr; cout<<MyClass::getCount(); system("pause"); return 0; } 这样输出就是1232了??为什么呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
l9861231机器人#1 · 2010/12/15
创建对象就调用构造函数加1,删除对象析构的时候就-1 了哇 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : #include<iostream> : using namespace std; : class MyClass : ...................
heshanshan机器人#2 · 2010/12/15
为什么第一种情况在创建MyClass obj;时count的值是1,为啥在cout<<obj.getCount();的时候输出的是2不是1呢?a和obj不同的啊,为什么不是独立的,在加上MyClass a;后cout<<obj.getCount()输出就成了2?还是晕晕乎乎的……谢谢你哈…… 【 在 l9861231 的大作中提到: 】 : 创建对象就调用构造函数加1,删除对象析构的时候就-1 了哇 : 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : : #include<iostream> : ...................
heshanshan机器人#3 · 2010/12/15
是不是跟他的名字没有关系,不是独立的哇? 【 在 l9861231 的大作中提到: 】 : 创建对象就调用构造函数加1,删除对象析构的时候就-1 了哇 : 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : : #include<iostream> : ...................
onlyff机器人#4 · 2010/12/15
#include<iostream> using namespace std; class MyClass { public: MyClass(){++count;} ~MyClass(){--count;} static int getCount(){return count;} private: static int count; }; int MyClass::count=0; int main() { MyClass obj; //创建对象,调用构造函数,count=1 MyClass a; //创建对象,调用构造函数,count=2 cout<<obj.getCount(); //count为静态成员,它是与类关联而不是与该类的对象关联,此处输出2 cout<<a.getCount(); //此处也输出2 MyClass *ptr=new MyClass; //创建对象,调用构造函数,count=3 cout<<MyClass::getCount(); //此处输出3 delete ptr; //调用析构函数,count减1 cout<<MyClass::getCount(); //此处输出2 system("pause"); return 0; }
GTQ机器人#5 · 2010/12/15
因为是静态成员变量哇,就是对象之间共享的哇。。。 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : 是不是跟他的名字没有关系,不是独立的哇?
l9861231机器人#6 · 2010/12/15
哦,用乱号了 【 在 GTQ (『热情一顶乐团』副团长|【回帖终结者A2】) 的大作中提到: 】 : 因为是静态成员变量哇,就是对象之间共享的哇。。。
heshanshan机器人#7 · 2010/12/15
哦哦,晓得了……非常感谢…… 那个……我还想罗嗦下,如果不用静态成员函数,就用一般的,输出时输出1232,要在这个基础上怎么改啊,我改了好多次都编译不过…… 【 在 l9861231 的大作中提到: 】 : 哦,用乱号了 : 【 在 GTQ (『热情一顶乐团』副团长|【回帖终结者A2】) 的大作中提到: 】 : : 因为是静态成员变量哇,就是对象之间共享的哇。。。 : ...................
heshanshan机器人#8 · 2010/12/15
(count为静态成员,它是与类关联而不是与该类的对象关联,此处输出2)谢谢你啊,我明白了……静态成员是数据共享的哇,谢啦:) 【 在 onlyff 的大作中提到: 】 : #include<iostream> : using namespace std; : class MyClass : ...................
l9861231机器人#9 · 2010/12/15
呃。那你申请个全局变量吧 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : 哦哦,晓得了……非常感谢…… : 那个……我还想罗嗦下,如果不用静态成员函数,就用一般的,输出时输出1232,要在这个基础上怎么改啊,我改了好多次都编译不过……