C++ 预置和弃置的函数

news/2024/11/13 5:31:17/

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

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

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

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

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

【运行结果】 


http://www.ppmy.cn/news/1504010.html

相关文章

前端面试题整理-HTML

1. 从用户输入 url 到页面展示发生了什么&#xff1f; &#xff08;1&#xff09;首先进行url合法性校验&#xff1a;包括协议域名端口号 &#xff08;2&#xff09;进行强缓存判断&#xff0c;判断本地缓存是否已经存在需要的资源文件&#xff0c;存在直接使用本地缓存即可 &…

c# 构造器的声明与调用

在C#中&#xff0c;构造器&#xff08;Constructor&#xff09;是一种特殊类型的函数&#xff0c;用于初始化类的新实例。构造器的名字必须与类名完全相同&#xff0c;并且没有返回类型&#xff0c;甚至连void也不行。 当创建类的一个新实例时&#xff0c;构造器会自动被调用。…

前端必修技能:高手进阶核心知识分享 - css盒的before、after和子元素的层叠关系解析及应用

早在十几二十年前,我最开始接触CSS的时候,根本没听说过 before 和 after ,那时候公司的浏览器更新到了IE8,我那个老古董的WINXP系统的浏览器升级到IE7,市面上甚至大部分电脑的浏览器还都是IE6。那时候每次做页面 ,最头疼的就是各个浏览器的兼容问题。甚至公司专门请了个人…

远程访问mysql数据库的正确打开方式

为了安全&#xff0c;mysql数据库默认只能本机登录&#xff0c;但是在有些时候&#xff0c;我们会有远程登录mysql数据库的需求&#xff0c;这时候应该怎么办呢&#xff1f; 远程访问mysql数据&#xff0c;需要两个条件&#xff1a; 首先需要mysql服务器将服务绑定到0.0.0.0…

IntelliJ IDEA 和 Eclipse的区别

IntelliJ IDEA 和 Eclipse 是两个非常流行的 Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;它们各自具有不同的特点和优势。下面是它们之间的一些主要对比&#xff1a; 性能和资源使用 IntelliJ IDEA 被认为在某些方面更加智能&#xff0c;能够提供更好的代码分…

代码随想录算法训练营第45天

115.不同的子序列 但相对于刚讲过 392.判断子序列&#xff0c;本题 就有难度了 &#xff0c;感受一下本题和 392.判断子序列 的区别。 代码随想录 class Solution {public int numDistinct(String s, String t) {int lenS s.length();int lenT t.length();int[][] dp new …

大模型瘦身专家!单卡处理Llama 3.1 405B 超强压缩工具LLMC来了

原文&#xff1a;大模型瘦身专家&#xff01;单卡处理Llama 3.1 405B 超强压缩工具LLMC来了 人工智能&#xff08;AI&#xff09;正变得越来越聪明&#xff0c;尤其是那些大型语言模型(LLMs)&#xff0c;它们在处理自然语言方面的能力让人惊叹。但你知道吗?这些聪明的AI大脑背…

现在的Java面试都这么扯淡了吗?

估计跟我3年经验的时候差不多&#xff0c;在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01…