C++ 预置和弃置的函数

在C++11中,预置和弃置的函数是用于处理移动语义和完美转发的。

  1. 预置函数(Move Constructor)是在对象被移动时调用的构造函数。它允许将资源从一个对象转移到另一个对象,而不是进行复制。这可以提高性能,特别是在处理大型数据结构时。
  2. 弃置函数(Destructor)是在对象被销毁时调用的析构函数。它负责释放对象所占用的资源,如内存、文件句柄等。

下面的代码预置函数中有&&,是C++11的新特性--右值引用。

怎么调用这个预置函数,使用move函数就可以让编译器知道可以直接调用具有右值引用的移动构造函数。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
/*
在C++11中,预置和弃置的函数是用于处理移动语义和完美转发的。
预置函数(Move Constructor)是在对象被移动时调用的构造函数。它允许将资源从一个对象转移到另一个对象,而不是进行复制。这可以提高性能,特别是在处理大型数据结构时。
弃置函数(Destructor)是在对象被销毁时调用的析构函数。它负责释放对象所占用的资源,如内存、文件句柄等。
*/
class MyClass {
public:
    MyClass() {
        cout << "调用默认构造函数" << endl;
    }

    MyClass(const MyClass& other) {
        cout << "调用拷贝构造函数" << endl;
    }
    //预置函数
    MyClass(MyClass&& other) noexcept {
        cout << "调用移动构造函数" << endl;
    }
    //弃置函数
    ~MyClass() {
        cout << "调用析构函数" << endl;
    }
};

int main() {
    MyClass obj1; // 调用默认构造函数
    MyClass obj2(obj1); // 调用拷贝构造函数
    MyClass obj3(move(obj1)); // 调用移动构造函数
    //3个对象调用3次析构函数
    return 0;
}

【运行结果】

相关推荐
shilei_c2 分钟前
qt qDebug无输出问题解决
开发语言·c++·算法
一切尽在,你来9 分钟前
C++ 零基础教程 - 第4讲-实现简单计算器
开发语言·c++
是店小二呀27 分钟前
Visual Studio C++ 工程架构深度解析:从 .vcxproj 到 Qt MOC 的文件管理实录
c++·qt·visual studio
枫叶丹429 分钟前
【Qt开发】Qt系统(十二)-> Qt视频
c语言·开发语言·c++·qt·音视频
浅念-31 分钟前
C语言文件操作
c语言·c++·经验分享·笔记·学习
Ivanqhz33 分钟前
向量化计算
开发语言·c++·后端·算法·支持向量机·rust
一切尽在,你来34 分钟前
C++ 零基础教程 - 第 7 讲 bool运算符和选择结构教程
c++
LXS_35736 分钟前
常用算法(下)---拷贝、替换、算术生成、集合算法
开发语言·c++·算法·学习方法
Yan_uuu41 分钟前
ubuntu18.04 安装 x264、ffmpeg、nv-codec-hearers 支持GPU硬件加速
c++·图像处理·ubuntu·ffmpeg
近津薪荼1 小时前
优选算法——滑动窗口4(找子串)
c++·学习·算法