一点疑惑
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; 这里调试时并未见到输出啊???
[解决办法]
human h2 = f1(h1); //先调用函数f1(),输出human_num:1,而后输出human_num为0,//为什么会human_num减一个成了0???