以前仅知道创建对象,但对匿名对象的了解基本为0。
通过阅读google chromium源代码 中关于 log 的使用,查阅相关资料,了解了一下匿名对象,予以记录。
什么是匿名对象
匿名对象可以理解为是一个临时对象,一般系统自动生成的,如你的函数返回一个对象,这个对象在返回时会生成一个临时对象。
#include <iostream>
class myclass {
public:
myclass()
{
std::cout << "构造函数" << std::endl;
}
~myclass()
{
std::cout << "析构函数" << std::endl;
}
};
void playStage() {
myclass(); /*在执行此代码时,利用构造函数生成了一个匿名myclass类对象;执行完此行代码,因为外部没有接此匿名对象的变量,此匿名又被析构了*/
myclass my= myclass(); /*在执行此代码时,利用构造函数生成了一个匿名myclass类对象;然后将此匿名变成了my这个实例对象,此匿名对象没有被析构。*/
std::cout<<"my 对象没有被析构"<<std::endl;
}
int main() {
playStage();
system("pause");
return 0;
}
输出:
构造函数 析构函数 构造函数
my 对象没有被析构 析构函数