#include <iostream> using namespace std; class Test { public: Test() { printf("construct ..\n"); } ~Test() { printf("destruct...\n"); } }; Test Get() { Test t = Test(); return t; } int main(int argc,char *argv[]) { Test t = Get(); return 0; }
控制台的输出是:
$g++ -g -Wall -O0 testdestructor.cc $./a.out
构造..
破坏…
解决方法
@H_301_15@ 我认为原因是在’Get’中返回值优化.看看http://en.wikipedia.org/wiki/Return_value_optimization
其实您的代码不是标准示例,但也可能您的编译器也适用于此.