#include <iostream>
#include <utility> // for std::move
class MyClass {
public:
MyClass() {
std::cout << "Constructor called\n";
}
MyClass(const MyClass& other) {
std::cout << "Copy constructor called\n";
}
MyClass(MyClass&& other) noexcept {
std::cout << "Move constructor called\n";
}
};
void exampleFunction(MyClass obj) {
std::cout << "Inside function\n";
}
int main() {
MyClass obj1;
// 使用 std::move 将 obj1 转换为右值引用,从而调用移动构造函数
exampleFunction(std::move(obj1));
return 0;
}
std::move 是一个用于将左值转换为右值引用的工具函数。它不会实际移动任何数据,只是改变表达式的值类别(value category),使得编译器可以选择移动语义而不是复制语义。MyClass 类定义了默认构造函数、拷贝构造函数和移动构造函数。exampleFunction(std::move(obj1)) 时,obj1 被 std::move 转换为右值引用,因此会调用移动构造函数而不是拷贝构造函数。上一篇:c++ 初始化列表
下一篇:c++ for each
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站