C++局部对象-临时对象

临时对象可以认为就是没有名字的对象,被创建出来后

#include<iostream>

#include<string>

int main(){
	std::string tmp;	//局部对象,并不是临时对象
}
class A{};

A get(){
	A a;
	return a;	//返回时,创建临时对象。如果A有移动构造函数,则会触发
}

对象a在函数栈中被创建,在函数返回时已经被析构了,是不可以返回的,所以需要创建一个“临时对象”,如果A定义了移动构造,那么调用 A aa = get()时就会触发移动构造。