【C++】匿名对象

文章目录

  • 一、基本概念
  • 二、使用场景
  • 三、注意事项

一、基本概念

匿名对象,也叫作临时对象,就是创建时不用取名的对象,它的生命周期只有一行。

例子:

class A
{
	...
};

int main()
{
	//创建匿名对象
	A();//生命周期只有这一行
	//下一行就自动调用析构函数了
}

二、使用场景

匿名对象有什么用呢?

正常来说,我们想要调用类的成员函数,必须先创建一个对象,然后通过对象去调用。但是有些情况下,我们仅是想调用类的成员函数,却还得给这个对象想个名字,这样做就略显繁琐。这个时候,就可以利用匿名对象,省去了取名字的烦恼,一次性使用,代码也更简洁。

例子:

class A
{
public:
	void func()
	{
		...
	}

private:
	...	
};

int main()
{
	// 不使用匿名对象
	A aa;
	aa.func();

	// 使用匿名对象
	A().func();
}

三、注意事项

匿名对象有常属性,所以引用匿名对象只能 const 引用。

例子:

class A
{
	...	
};

void func(const A& d)//匿名对象引用要加const
{
	...
}

int main()
{
	func(A());
}

事实上,const 引用会延长匿名对象的生命周期,延长至该引用的生命周期。(本质是将匿名对象变成了有名对象)

例子:

class A
{
	...	
};

int main()
{
	A();//生命周期只有一行

	const A& aa = A();//生命周期延长至该引用的生命周期

	return 0;
}

你可能感兴趣的:(#,C++入门,c++,开发语言)