c++关于临时对象的小问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 19:33:01
完善下列程序,定义每个成员函数和非成员函数,输出必要的信息,检查临时对象何时被创建,何时被析构。
class x
{
public:
x(int);
x(x&);
~x();
};

x f(x);

void main()
{
x a(1);
x b=f(x(2));
a=f(a);
}

//原题目就是这样写的,各位高手帮忙啊~谢谢

//定义每个成员函数和非成员函数,输出必要的信息,检查临时对象何时被创建,何时被析构
//以下仅供参考
#include <iostream>

class x
{
public:
x(int el = 0):elem(el)
{
std::cout<<"构造函数被调用"<<std::endl;
}
x(x& a)
{
elem = a.elem;
std::cout<<"拷贝构造函数被调用,elem = "<<elem<<std::endl;
}

virtual ~x()
{
std::cout<<"析构函数被调用"<<std::endl;
}
private:
int elem;
};

x f(x a)
{
std::cout<<"返回x类型的函数f()被调用"<<std::endl;
return a;
}

int main()
{

x a(1);
x b=f(x(2));
a=f(a);
return EXIT_SUCCESS;
}

#include <stdio.h>
class x
{
private:
int nX=-1;
public:
x(int n)
{
nX=n;
printf("构造函数传入参数为%d的对象被创建\n",nX);
}
x(x &n){
nX=n;
printf("构