4. 临时对象(匿名对象)

临时对象(又叫匿名对象)是指直接由构造函数创建的对象。他通常用于表达式中或函数传参等临时创建一个对象进行操作。

临时对象的生命周期短,通常在表达式结束后就会被销毁。

示例

// filename: temp_obj.cpp
#include <iostream>

using namespace std;

class Square {
    public:
        Square(double l=1) {
            cout << "边长为" << l << "的正方形被创建!" << endl;
            length = l;
        }
        ~Square() {
            cout << "边长为" << length << "的正方形被销毁!" << endl;
        }
        double get_length(void) {
            return  length * 2;
        }
    private:
        double length;
};

int main(int argc, char * argv[]) {
    // 创建临时对象
    Square(55);
    // 创建临时对象并调用成员函数
    cout << Square(6).get_length() << endl;

    return 0;
}

编译和运行结果如下

weimz@mzstudio:~$ g++ -o temp_obj temp_obj.cpp
weimz@mzstudio:~$ ./temp_obj 
边长为55的正方形被创建!
边长为55的正方形被销毁!
边长为6的正方形被创建!
12
边长为6的正方形被销毁!

从构造函数和析构函数的调用过程来看,临时对象在创建此对象的表达式执行完毕后临时对象就会被销毁。