C++ 匿名对象的生命周期

2020-01-03  本文已影响0人  fck_13

请看代码:

#include <iostream>
#include <string>
#include <chrono>

class Object
{
public:
    Object(const std::string& name)
    {
        str = name;
        std::cout << str <<" " << "Constructor" << std::endl;
    }

    ~Object()
    {
        std::cout << str << " " << "destructed" << std::endl;
    }

private:
    std::string str;
};

Object externalObj("external");

int main()
{
    std::cout << "enter main" << std::endl;
    Object("un-name");

    Object internalObj("internal");

    std::cout << "Hello World" << std::endl;

    return 0;
}

运行结果:
external Constructor
enter main
un-name Constructor
un-name destructed
internal Constructor
Hello World
internal destructed
external destructed

原因:
Temporary objects are destroyed as the last step in evaluating the full-expression (1.9) that (lexically) contains the point where they were created.
就是说,匿名对象的生命周期为创建它的语句执行结束。

上一篇 下一篇

猜你喜欢

热点阅读