#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
构造..
破坏…
解决方法
我认为原因是在’Get’中返回值优化.
看看http://en.wikipedia.org/wiki/Return_value_optimization
其实您的代码不是标准示例,但也可能您的编译器也适用于此.
原文地址:https://www.jb51.cc/c/112133.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。