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;
}

【运行结果】

相关推荐
rigidwill6663 分钟前
LeetCode hot 100—最长有效括号
数据结构·c++·算法·leetcode·职场和发展
阳光_你好21 分钟前
C++/Qt中QActionGroup类用法
c++·qt
菜鸟射手1 小时前
QT creater和vs2017文件路径问题
linux·c++·windows·qt
wuqingshun3141591 小时前
蓝桥杯17. 机器人塔
c++·算法·职场和发展·蓝桥杯·深度优先
simple_whu1 小时前
解决编译pcl时报错‘chrono_literals‘: is not a member of ‘std‘
c++·windows·visual studio
吴_知遇3 小时前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
LaoWaiHang3 小时前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc
到底怎么取名字不会重复4 小时前
Day10——LeetCode15&560
c++·算法·leetcode·哈希算法·散列表
陈大大陈5 小时前
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
java·linux·开发语言·数据结构·c++·算法·缓存
纪元A梦5 小时前
华为OD机试真题——通过软盘拷贝文件(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题