请看代码:
#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.
就是说,匿名对象的生命周期为创建它的语句执行结束。
网友评论