1、产生
1)当函数的返回值是对象时 产生一个匿名对象
2)直接调用构造函数时产生匿名对象
2、生命周期
取决于如何来接
(1)使用初始化的方法来接
(2)使用一个对象来接
代码演示
class A
{
};
A xx()
{
A a(10,20);
reuturn a;
//最后函数把这个 a 给析构掉了 把a 给赋值给了一个匿名对象
}
int main()
{
A b = xx(); //产生的匿名对象不会被析构 而是把它改为b 就类似于把它所占的空间改了个门牌号
A c;
c=xx(); //用一个对象来接 匿名对象任务完成后就会被析构
}
3、编程示例
构造函数中调用构造函数,产生预期之外的结果
#include<iostream>
using namespace std;
class A
{
public:
A(int a, int b)
{
this->a = a;
this->b = b;
A(a, b, 30);
}
A(int a, int b, int c)
{
this->a = a;
this->b = b;
this->c = c;
}
void getA()
{
cout << this->a << "\t" << this->b << "\t" << this->c << "\t" << endl;
}
~A()
{
cout <<"析构函数"<< this->a << "\t" << this->b << "\t" << this->c << "\t" << endl;
}
private:
int a;
int b;
int c;
};
int main()
{
A a1(10, 20);
a1.getA();
system("pause");
return 0;
}
结果分析