【C++ 学习】拷贝构造你了解多少?

文章目录

      • 1. 拷贝构造的引入
      • 2. 拷贝构造的引用场景

1. 拷贝构造的引入

拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用;

特征:
① 拷贝构造函数是构造函数的一个重载形式。

② C++自定义的类型会调用它的拷贝构造;
在这里插入图片描述

③拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用;在这里插入图片描述
在这里插入图片描述

④ 若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝;

2. 拷贝构造的引用场景

① 使用已存在对象创建新对象;
② 函数参数类型为类类型对象;
③ 函数返回值类型为类类型对象;

class Date
{
public:Date(int year, int minute, int day){cout << "Date(int,int,int):" << this << endl;}Date(const Date& d){cout << "Date(const Date& d):" << this << endl;}~Date(){cout << "~Date():" << this << endl;}
private:int _year;int _month;int _day;
};
Date Test(Date d)
{Date temp(d);return temp;
}
int main()
{Date d1(2022, 1, 13);Test(d1);return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql安装好后my.ini文件在何处

文章目录 报错 Invalid default value for ‘‘begin_time‘‘my.ini文件何在 背景&#xff1a;导入一个sql脚本时执行报错&#xff0c;需要修改my.ini中的一个配置 报错 Invalid default value for ‘‘begin_time‘‘ 需要修改my.ini中的slq-mode配置 参考的这个哥们博客配…

wordpress免费主题下载

免费wordpress模板下载 简洁大气的文化艺术类wordpress模板&#xff0c;可以免费下载&#xff0c;实用易上手&#xff0c;新手也适合。 https://www.wpniu.com/themes/304.html 免费wordpress主题下载 高端大气上档次的wordpress主题&#xff0c;也可以是免费的&#xff0c;…

想做抖店但没货源也不知道卖什么,怎么入局?小白入门教程分享!

我是王路飞。 作为现在流量最大、机会最多的平台&#xff0c;入局抖音已经不是要不要的事情了&#xff0c;而是不得不去做。 尤其对普通人来说&#xff0c;没有任何优势的情况下&#xff0c;短视频、直播带货、网红等等都太遥远了&#xff0c;其中最适合也最容易拿到结果的&a…

【数据分享】2000-2022年全国1km分辨率的逐年PM2.5栅格数据(免费获取)

PM2.5作为最主要的空气质量指标&#xff0c;在我们日常研究中非常常用&#xff01;之前我们给大家分享了2013-2022年全国范围逐日的PM2.5栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们给大家带来的是2000-2022年全国范围的逐年的PM2.5栅格数…

jvm堆概述

《java虚拟机规范》中对java堆的描述是&#xff1a;所有的对象实例以及数组都应当在运行时分配在堆上。 一个JVM实例只存在一个堆内存(就是new 出来一个对象)&#xff0c;java内存管理的核心区域 java堆区在jvm启动的时候就被创建&#xff0c;空间大小确定。是jvm管理的最大一…

R统计学2 - 数据分析入门问题21-40

往期R统计学文章&#xff1a; R统计学1 - 基础操作入门问题1-20 21. 如何对矩阵按行 (列) 作计算&#xff1f; 使用函数 apply() vec 1:20 # 转换为矩阵 mat matrix (vec , ncol4) # [,1] [,2] [,3] [,4] # [1,] 1 6 11 16 # [2,] 2 7 12 17 # [3,] …

linux救援模式恢复

只需要在这里的shell键入一条命令&#xff1a; xfs_repair -v -L /dev/dm-0 命令为修复磁盘命令 执行完成后即可重启&#xff0c;恢复正常。 如果输入xfs_repair -v -L /dev/dm-0 &#xff0c;报 no such file or directionary 的错误&#xff0c;是没有这个设备。 输入jou…

Python使用MySQL数据库从入门到精通

一&#xff0c;安装mysql 如果是windows 用户&#xff0c;mysql 的安装非常简单&#xff0c;直接下载安装文件&#xff0c;双击安装文件一步一步进行操作即可。 Linux 下的安装可能会更加简单&#xff0c;除了下载安装包进行安装外&#xff0c;一般的linux 仓库中都会有mysql…

leetcode 1143. 最长公共子序列【动态规划】

leetcode 1143. 最长公共子序列 int longestCommonSubsequence(char* text1, char* text2) {int len1 strlen(text1);int len2 strlen(text2);int dp[len1 1][len2 1];memset(dp, 0, sizeof(dp));for (int i 1; i < len1; i) {for (int j 1; j < len2; j) {if (t…

Visual Studio 2022缺少项目模板的一种解决办法

检查设置 发现vs2022项目模板缺少&#xff0c;先打开vs2022&#xff0c;看看位置是否正确 缺少项目模板时处理 我在升级到&#xff1a;17.9.2时&#xff0c;在新建项目时&#xff0c;发现C#缺少“Windows窗体应用&#xff08;.Net Framework)”&#xff0c;我装了个vs201…

lvs集群介绍

目录 一、LVS集群基本介绍 1、什么是集群 2、集群的类型 2.1 负载均衡群集&#xff08;Load Balance Cluster) 2.2 高可用群集(High Availiablity Cluster) 2.3 高性能运算群集(High Performance Computing Cluster) 3、负载均衡集群的结构 ​编辑 4、LVS集群类型中的…

软件测试工程师的一天工作内容是什么?

相信但凡提出这个问题&#xff0c;基本上都是准备入行或转行&#xff0c;又各种纠结的小伙伴。测试工程师到底都些干啥&#xff1f;加班多不多?薪资高不高?前景怎么样?有没有35岁焦虑问题&#xff1f;让我们挨个问题盘一下。 一、测试人员的日常 9&#xff1a;30 到公司 打…