首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

1点疑惑

2012-10-16 
一点疑惑class human{public:human(){ human_num++} //默认构造函数static int human_num//静态成员~hu

一点疑惑
class human
 {
 public:
 human(){ human_num++;}; //默认构造函数
 static int human_num; //静态成员
 ~human()
 {
 human_num--;
 print();
 }
 void print() //
 {
 cout<<"human num is: "<<human_num<<endl;
 }
 protected:
 private:
 };
 int human::human_num = 0; //类中静态数据成员在外部定义,仅定义一次
 human f1(human x)
 {
 x.print();
 return x;
 }
 int main(int argc, char* argv[])
 {
 human h1; //调用默认构造函数,human_num变为1
 h1.print(); // 打印Human_man:1
 human h2 = f1(h1); //先调用函数f1(),输出human_num:1,而后输出human_num为0,//为什么会human_num减一个成了0???
 h2.print();//打印输出:human_num:0
 getchar();
 return 0;
 } //依次调用两个析构函数:输出:human_num:-1,human_num:-2;

1)human h2 = f1(h1); //先调用函数f1(),输出human_num:1,而后输出human_num为0,//为什么human_num会减一个成了0???
2)依次调用两个析构函数:输出:human_num:-1,human_num:-2; 这里调试时并未见到输出啊???

[解决办法]

C/C++ code
    human h2 = f1(h1); //先调用函数f1(),输出human_num:1,而后输出human_num为0,//为什么会human_num减一个成了0??? 

热点排行