开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
我用 g++ -O0 main.cc 编译后执行
为什么 main function 在执行 Foo foo1 = Func(); 时
完全没有 copy constructor 被呼叫
喂入的资料(Input):
预期的正确结果(Expected Output):
一次 copy constructor 被执行
###
### codepad 上执行的结果是两次 copy constructor 被执行!
### 这是因为 Func 的回传值先被复制到一个暂时的变量后
### 暂时的变量再被复制到 foo1 吗???
### 所以总共两次 copy constructor 被执行
###
错误结果(Wrong Output):
in constructor
0x7fff53564b28
=======
0x7fff53564b28
没有 copy constructor 被执行
而且 Func 内 local foo 位址与 main 内 foo1 位址相同
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/81B5HPLf
补充说明(Supplement):