C++中如何详细解析移动构造函数与move语句用法示例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2775个文字,预计阅读时间需要12分钟。
前言:本文主要向家长介绍了C++中移动构造函数及move语句的相关内容,分享出来供大家参考学习。下面不多说了,一起来详细看看吧!
首先,看一个小例子:
cpp#include #include // 包含std::move
class MyClass {public: MyClass() { std::cout << Constructor called.\n; } MyClass(const MyClass&) { std::cout << Copy constructor called.\n; } MyClass(MyClass&&) noexcept { std::cout << Move constructor called.\n; } ~MyClass() { std::cout << Destructor called.\n; }};
int main() { MyClass obj1; MyClass obj2(std::move(obj1)); // 使用std::move调用移动构造函数 return 0;}
输出结果:
Constructor called.Move constructor called.Destructor called.
在这个例子中,我们定义了一个名为`MyClass`的类,它具有默认构造函数、拷贝构造函数、移动构造函数和析构函数。在`main`函数中,我们创建了一个`MyClass`对象`obj1`,然后使用`std::move`将其移动到另一个对象`obj2`中。可以看到,移动构造函数被调用,而拷贝构造函数没有被调用。
接下来,我们将详细介绍移动构造函数和move语句的用法。
本文共计2775个文字,预计阅读时间需要12分钟。
前言:本文主要向家长介绍了C++中移动构造函数及move语句的相关内容,分享出来供大家参考学习。下面不多说了,一起来详细看看吧!
首先,看一个小例子:
cpp#include #include // 包含std::move
class MyClass {public: MyClass() { std::cout << Constructor called.\n; } MyClass(const MyClass&) { std::cout << Copy constructor called.\n; } MyClass(MyClass&&) noexcept { std::cout << Move constructor called.\n; } ~MyClass() { std::cout << Destructor called.\n; }};
int main() { MyClass obj1; MyClass obj2(std::move(obj1)); // 使用std::move调用移动构造函数 return 0;}
输出结果:
Constructor called.Move constructor called.Destructor called.
在这个例子中,我们定义了一个名为`MyClass`的类,它具有默认构造函数、拷贝构造函数、移动构造函数和析构函数。在`main`函数中,我们创建了一个`MyClass`对象`obj1`,然后使用`std::move`将其移动到另一个对象`obj2`中。可以看到,移动构造函数被调用,而拷贝构造函数没有被调用。
接下来,我们将详细介绍移动构造函数和move语句的用法。

