void f (widget rhs);
f(widget());
从C++语法角度, 1. 调用widget 默认构造函数 2. 调用widget 移动构造函数 3,调用f
但是编译器会做优化,省掉了移动操作(即使自己定义了移动构造函数,也不会调用)
g++ 关闭编译选项 -fno-elide-constructors
widget w;
f(w);
1 调用widget 默认构造函数 2. 调用widget 拷贝构造函数 3. 调用f
void f (widget rhs);
f(widget());
从C++语法角度, 1. 调用widget 默认构造函数 2. 调用widget 移动构造函数 3,调用f
但是编译器会做优化,省掉了移动操作(即使自己定义了移动构造函数,也不会调用)
g++ 关闭编译选项 -fno-elide-constructors
widget w;
f(w);
1 调用widget 默认构造函数 2. 调用widget 拷贝构造函数 3. 调用f