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

【运行结果】

相关推荐
念恒123063 小时前
继承(下) (Inheritance)
c++
H Journey4 小时前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
研究点啥好呢8 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
_dindong8 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
沫璃染墨8 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
6Hzlia9 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
计算机安禾9 小时前
【数据结构与算法】第36篇:排序大总结:稳定性、时间复杂度与适用场景
c语言·数据结构·c++·算法·链表·线性回归·visual studio
unicrom_深圳市由你创科技9 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
无限进步_10 小时前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
C++ 老炮儿的技术栈10 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt