/
githubmirror
/
CPlusPlusThings
Обзор
Документация
Войти
/
githubmirror
/
CPlusPlusThings
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
basic_content/pointer_refer/copy_construct.cpp
29 строк
746 B
zhangxing
support bazel complie this project and format code.
30 мар 2024, 17:00
30 мар 2024, 17:00
3c8a3f2
Код
Авторство
О чём код?
/** * @file copy_construct.cpp * @brief g++ -o copy_construct copy_construct.cpp -fno-elide-constructors * -fno-elide-constructors选项(关闭返回值优化) * @author 光城 * @version v1 * @date 2019-08-09 */ #include <iostream> using namespace std; class Copyable { public: Copyable() {} Copyable(const Copyable &o) { cout << "Copied" << endl; } }; Copyable ReturnRvalue() { return Copyable(); // 返回一个临时对象 } void AcceptVal(Copyable a) {} void AcceptRef(const Copyable &a) {} int main() { cout << "pass by value: " << endl; AcceptVal(ReturnRvalue()); // 应该调用两次拷贝构造函数 cout << "pass by reference: " << endl; AcceptRef(ReturnRvalue()); // 应该只调用一次拷贝构造函数 }