首页 > 编程语言 >C/C++默认生成的几个函数s

C/C++默认生成的几个函数s

时间:2024-07-26 10:20:24浏览次数:7  
标签:函数 age 默认 item C++ Student 拷贝 赋值 构造函数

一、关键词

  • 类/结构体默认生成。
  • 拷贝/移动 + 构造/赋值 = 组合不同方式有4种,除默认、析构,共计6种。
  • 在使用时:拷贝/移动 + 赋值的,都是定义和赋值分开;拷贝/移动 + 构造的,都是定义和赋值一起。

二:知识点

  1. 默认构造函数
    Student():age(0){};
  2. 拷贝构造函数
    Student(const Student& item) : age(item.age){};
  3. 析构函数
    ~Student():age(0){}
  4. 拷贝赋值运算符
Student& ooperator=(const Student& item){
	if(this == &item){return *this;}
	age = item.age;
	return *this;
  1. 移动构造函数
Student(Student&& item){
	age = item.age;
	item.age = 0;
}
  1. 移动赋值运算符
Student& operator=(Student&& item){
	if(this == &item)return *this;
	age = item.age;
	item.age = 0;
	return *this;
}

三、实际运用

//默认构造函数
Student s;

//拷贝构造函数
Student s2 = s;

//拷贝赋值运算符
Student s2;
s2 = s;

//移动构造函数
Student s3 = std::move(s);

//移动赋值运算符
Student s4;
s4 = std::move(s);

标签:函数,age,默认,item,C++,Student,拷贝,赋值,构造函数
From: https://www.cnblogs.com/lvshen/p/18324596

相关文章

  • 仓颉编程语言技术指南:嵌套函数、Lambda 表达式、闭包
    本文分享自华为云社区《【华为鸿蒙开发技术】仓颉编程语言技术指南【嵌套函数、Lambda表达式、闭包】》,作者:柠檬味拥抱。仓颉编程语言(Cangjie)是一种面向全场景应用开发的通用编程语言,旨在兼顾开发效率和运行性能,并提供良好的编程体验。本文将深入探讨仓颉语言的主要特点和功能,包......
  • C++ typeid 关键字的注意事项
    typeid 是C++的一个关键字,用于动态类型获取。typeid 运算符与RTTI(运行时类型信息)密切相关,它返回一个指向 std::type_info 对象的引用,该对象表示了表达式的类型。使用 typeid 时,需要注意以下几个方面:需要#include <typeinfo>头文件:要使用 typeid,应在代码中包含 <t......
  • APP重启 - C#小函数类推荐
          此文记录的是一个应用程序重启的函数。/***应用程序重启动AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用方法:......
  • C++ 虚基类注意事项
    C++中的虚基类(VirtualBaseClass)是一个重要的概念,主要用于解决多重继承中的菱形继承问题,即当一个派生类通过多条路径继承同一个基类时,基类在派生类中会有多个副本,导致资源浪费和不必要的复杂性。以下是C++虚基类的一些详细注意事项:1.虚基类的定义与声明定义方式:虚基类并不......
  • Manim 学习笔记(一)--常用的几个函数和操作
    常用的一些操作【注:随版本升级,有些操作和指令会有改动】frommanimimport*从manim中导入了需要用到的模块classHello_World(Scene)创建一个继承自Scene的一个类;defconstruct(self)construct方法对于manim很特殊,manim调用这个方法来创建动画。所以基本上......
  • C语言:字符串函数族strlen,strcmp,C语言实现,
    1.字符串的复制:#include<stdio.h>#include<string.h>intmain(intargc,constchar*argv[]){ chararr[20]={0}; charbrr[20]={0}; intlen; inti; printf("请输入目标字符串arr:\n"); gets(arr); printf("请输入源字符串:\n"); gets(brr......
  • 尝试使用 PySpark show 函数显示结果时出错
    我正在尝试在PySpark中显示我的结果。我正在使用Spark3.5.1和安装了Java8的PySpark3.5.1,一切都设置良好。建议添加此内容的一些答案:importfindsparkfindspark.init()或添加此内容到配置:.config("spark.memory.offHeap.enabled","true")\.config("s......
  • 如何让 python 为我提供正确的函数解决方案并根据符号更改零的格式?
    我正在尝试制作一个二次公式计算器。一切看起来都很好,但是,当我输入一些函数(例如x^2-2x+1和x^2+2x+1)时,当它们有不同的解决方案时,它会给我相同的零。我遇到的另一个问题是,在代码的末尾,format_solution(root),我希望它能够根据符号改变格式。例如,如果零是(x-1),我不希望它输入(......
  • 为什么使用函数交换和使用赋值交换会产生不同的结果?
    这是快速排序的代码,其中我使用赋值来交换值。defpartion(arr,low,high):partion_index=lowpivot=arr[partion_index]while(low<high):whilelow<len(arr)and(arr[low]<=pivot):low+=1while(arr[high]>=pivot):high-=1if(low......
  • 在 matplotlib 中绘制一个字符串函数 // 将 str 解释为 python 代码?
    我正在创建一个RPN计算器,尝试绘制用户给出的函数。例如,如果用户输入"xsin3*plot"我希望它绘制sin(x)*3其代码如下。注意:问题在ifprompt=="plot"userInputX=""#userInputXisalwaysreplacedbefore......