C++什么时候生成默认的拷贝构造函数

1. 默认拷贝构造存在的问题

因为默认使用的是位拷贝,那么如果存在指针一类对象,那么不同对象会持有相同对象资源。

2. 什么时候触发拷贝构造函数

(1)用一个对象,当另一个对象的构造参数。

A b;
A a(b);

(2)=赋值操作

A a = b;

(3)函数传参时

(4)对象作为函数返回值时

3. 什么时候必须生成?

编译时生成默认构造函数。

(1)类成员也是一个类

class A
{
private:B b;        // 为了让b的构造函数也可以调用
};

为了让b的构造函数也可以调用,那么B也必须有默认的构造函数。

(2)一个类继承了另一个类,那么基类要有默认的拷贝构造函数。因为派生类需要调用基类的构造函数。

(3)类成员中有一个或多个虚函数。

(4)和(3)类似,如果基类有虚函数。基类有虚函数,那么派生类也会有虚函数表。

4. 小结

(1)为什么存在这个问题?因为一般默认构造函数都是浅拷贝。

(2)编译器为什么需要帮助我们去生成默认构造函数?需要遵循C++语法规则。

参考:

【【C++面试题】C++什么时候生成默认拷贝构造函数?】 https://www.bilibili.com/video/BV1YA4m1F76b/?share_source=copy_web&vd_source=4429eec99a3a4922ca78501eb4607294

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始的软件开发详解:数字药店系统源码与医保购药APP

很多小伙伴们疑问,医保购药APP是如何开发的,今天我将从零数字药店系统源码开始为大家提供一条清晰的实现方案。 一、技术架构设计 在开发医保购药APP之前,首先需要明确技术架构。一般来说,APP的技术架构可以分为前端和后端。 1…

CS创世8GB SD NAND的低功耗特性

在电子设备不断追求低功耗的今天,CS创世半导体的8GB SD NAND芯片以其低功耗特性脱颖而出。这款芯片的读写电流仅为15mA,相较于同类产品,其功耗显著降低,这不仅延长了设备的使用时间,还减少了对电池的依赖。这种低功耗特…

828华为云征文|Flexus云服务器X实例:在Docker环境下搭建java开发环境

828华为云征文|Flexus云服务器X实例:在Docker环境下搭建java开发环境 引言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 主要使用场景 二、购买Flexus云服务器X实例2.1 购买规格参考2.2 查看Flexus云服务器X实例状态 三、远程连接Flexus云…

Q必达任务脚本

文章目录 1.购买服务器地址2.部署教程3. 代码如下4. 如何联系我 1.购买服务器地址 服务器购买地址 https://t.aliyun.com/U/rUHk58 若失效,可用地址 https://www.aliyun.com/activity/wuying/dj?source5176.29345612&userCode49hts92d 2.部署教程 2024年最…

了解法国游戏玩家:应该知道的关键见解

随着中国开发商向全球市场扩张,了解不同地区游戏玩家的偏好和行为至关重要。法国拥有丰富的游戏文化,呈现了一个独特的市场,开发商必须考虑这些独特的功能才能取得成功。以下是中国开发者应该注意的法国游戏玩家的关键特征: 偏好…

VmWare安装虚拟机教程(centos7)

VMWare下载: 下载 VMware Workstation Pro - VMware Customer Connect 安装包:(16的版本)免费!(一个赞就行) 一直点下一步即可,注意修改一下安装位置就好 二、安装虚拟机 安装虚…

【Java】虚拟机(JVM)内存模型全解析

目录 一、运行时数据区域划分 版本的差异: 二、程序计数器 程序计数器主要作用 三、Java虚拟机 1. 虚拟机运行原理 2. 活动栈被弹出的方式 3. 虚拟机栈可能产生的错误 4. 虚拟机栈的大小 四、本地方法栈 五、堆 1. 堆区的组成:新生代老生代 …

Redis: 特点,优势,与其他产品的区别以及高并发原理

入门Redis概述 1 )选择Redis是因为其高性能 因为 Redis 它数据存储的机制是存在内存中的,减少了传统关系数据库的磁盘IO它是单线程的保证了原子性,它还提供了事务,锁等相关的机制 2 )Redis 环境安装配置 linux 或 d…

【Python-GUI图形化界面-PyQt5模块(3)】——Qwidget核心模块

本文旨在带大家学习Python中的一种GUI图形化界面模块——PyQt5模块,将为大家详细了解PyQt5模块中函数的参数和使用: 一、PyQt5简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一。 官方网站&a…

Qt-QSpinBox输入类控件(32)

目录 描述 属性 信号 使用 描述 微调框,如下,运行用户进行细微数据的操作,点击按钮,数据就会发生 “微调” 属性 value存储的数值.singleStep每次调整的"步⻓".按下⼀次按钮数据变化多少.displayInteger数字的进制…

云服务器是干什么的?

随着云计算的发展,云服务器的功能逐步完善。但是还有不少用户不清楚云服务器是干什么的?云服务器提供了一种灵活、可扩展的计算解决方案,适用于各种在线业务和项目。提供虚拟化的计算资源是云服务器最基本也是最重要的功能。 云服务器是干什…

leetcode第169题:多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3 示例 …

内置函数sorted()与方法sort()的区别、内置函数reversed()与方法reverse()的区别

1、内置函数sorted()与方法sort() #内置函数sorted()与方法sort()的区别 #定义一个列表ls ls[4,3,6,7,9] print(sorted(ls)) print(ls)#sorted函数不会改变原列表的顺序,它只是生成了一个新列表(临时排序,不会改变与列表顺序) pr…

ARM单片机的内存分布(重要)

ARM单片机的内存分布(重要) 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

MySQL 缓冲池管理与常见优化技巧

在 MySQL 数据库的性能优化中,缓冲池的管理至关重要。同时,了解其他常见的优化技巧也能极大地提升数据库的运行效率。今天,我们就来深入探讨在 MySQL 中如何管理并调整缓冲池的大小,以及一些常见的优化技巧。 一、缓冲池的重要性…

关于 NLP 应用方向与深度训练的核心流程

文章目录 主流应用方向核心流程(5步)1.选定语言模型结构2.收集标注数据3.forward 正向传播4.backward 反向传播5.使用模型预测真实场景 主流应用方向 文本分类文本匹配序列标注生成式任务 核心流程(5步) 基本流程实现的先后顺序…

harmonyOS ArkTS最新跳转Navigation

文章目录 取消标题栏初始页面(load)设置为竖屏 自定义标题Tabs&TabContentTabs通过divider实现了分割线各种属性 图片下载 官方文档 Entry Component struct Index {State message: string Hello WorldState djs:number 5build() {Column(){Navigation(){}.title("g…

从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用

创建Token 创建token的因素(条件)有很多,在该篇文章中,采用jwt配置和用户基本信息作为生成token的基本因素(读者可根据系统,自由改变生成token因素)。 在JwtPlugInUnit.CS中创建2个方法&#xf…

大模型常见面试题汇总(含答案),非常详细收藏我这一篇就够了

最近秋招正在如火如荼地进行中,看到很多人的简历上都包含大模型相关的工作,各家大厂和初创都很舍得给钱,动辄百万年包也变得不再稀奇。 因此在大模型纵横的这个时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面…

USB 电缆中的信号线 DP、DM 的缩写由来

经常在一些芯片的规格书中看到 USB 的信号对是以 DP 和 DM 命名: 我在想,这些规格书是不是写错了,把 N 写成 M 了?DM 中的 M 到底是什么的缩写? 于是我找了一些资料,终于在《Universal Serial Bus Cables …