匿名对象:没有变量名、没有被指针指向的对象,用完后马上调用析构
代码示例:
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();