64,652
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class human
{
public:
human(){ human_num++;print();}
human(const human& rhs){human_num++;print();}
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)
{
return x;
}
int main(int argc, char* argv[])
{
human h1;
human h2 = f1(h1);
return 0;
}
#include <iostream>
using namespace std;
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构造函数
h1.print(); //打印:1
human h2 = f1(h1);//完成一下动作:
//1 调用默认拷贝构造函数,参数传入
//2 在f1中打印:1
//3 创建临时对象,调用默认拷贝构造函数并初始化h2
//4 离开f1,销毁函数内对象,调用析购函数,打印 0
h2.print(); //打印 0
return 0;
} //销毁h1,h2,调用两次析构函数。