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

【运行结果】

相关推荐
A星空12320 分钟前
一、Linux嵌入式的I2C驱动开发
linux·c++·驱动开发·i2c
凡人叶枫41 分钟前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
会叫的恐龙1 小时前
C++ 核心知识点汇总(第六日)(字符串)
c++·算法·字符串
小糯米6011 小时前
C++顺序表和vector
开发语言·c++·算法
独望漫天星辰1 小时前
C++ 多态深度解析:从语法规则到底层实现(附实战验证代码)
开发语言·c++
王老师青少年编程2 小时前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)
c++·题解·真题·csp·信奥赛·csp-s·提高组
凡人叶枫2 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
CSDN_RTKLIB2 小时前
使用三方库头文件未使用导出符号情景
c++
rainbow68894 小时前
Linux文件描述符与重定向原理
c++
CodeSheep程序羊5 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展