匿名对象:没有变量名、没有被指针指向的对象,用完后马上调用析构

代码示例:

class Person {
public:
	Person() {
		cout << "Person() - " << this << endl;
	}
   // 拷贝构造函数
	Person(const Person &person) {
		cout << "Person(const Person &person) - " << this << endl;
	}
	~Person() {
		cout << "~Person() - " << this << endl;
	}
	void display() {
		cout << "display()"  << endl;
	}
};

应用示例

cout << 1 << endl;

// 匿名对象
Person().display();

cout << 2 << endl;

匿名对象调用次数

void test1(Person person) {

}

// 只调用一次构造函数,编译器智能检测,不会调用拷贝构造函数了
test1(Person());

// 只调用一次构造函数,编译器智能检测,不会调用拷贝构造函数了
Person person = Person();

对象作为返回值

Person test2() {
	// Person person;
	return Person();
}

Person person1;
// 这样写只会调用一次构造函数
person1 = test2();