C++核心编程_赋值运算符重载

article/2025/7/22 22:54:25
4.5.4 赋值运算符重载

c++编译器至少给一个类添加4个函数

  1. 默认构造函数(无参,函数体为空)

  2. 默认析构函数(无参,函数体为空)

  3. 默认拷贝构造函数,对属性进行值拷贝

  4. 赋值运算符 operator=, 对属性进行值拷贝

如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题

/*c++编译器至少给一个类添加4个函数
1. 默认构造函数(无参,函数体为空)
2. 默认析构函数(无参,函数体为空)
3. 默认拷贝构造函数,对属性进行值拷贝
4. 赋值运算符 operator=, 对属性进行值拷贝
如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题
**作用:**重载关系运算符,可以让两个自定义类型对象进行对比操作
*/class Person
{
public:Person(int age) {//将年龄数据开辟到堆区m_Age = new int(age);};//重载赋值运算符Person& operator=(Person& p) {//先判断是否有属性在堆区,如果有先释放干净,然后再进行深拷贝if (m_Age != NULL){delete m_Age;m_Age = NULL;}//提供深拷贝 解决浅拷贝的问题m_Age = new int(*p.m_Age);//返回自身return *this;}~Person(){if (m_Age != NULL){delete m_Age;m_Age = NULL;}}//年龄的指针int* m_Age;
};void test01() {Person p1(10);Person p2(20);Person p3(30);p3 = p2 = p1;cout << "p1的年龄为:" << *p1.m_Age << endl;cout << "p2的年龄为:" << *p2.m_Age << endl;cout << "p3的年龄为:" << *p3.m_Age << endl;
}int main() {test01();system("pause");return 0;
}


http://www.hkcw.cn/article/KbKdLMFvxe.shtml

相关文章

深度学习笔记25-RNN心脏病预测(Pytorch)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前期准备 1.数据处理 import torch.nn.functional as F import numpy as np import pandas as pd import torch from torch import nn dfpd.read_csv(r&…

基于 HT for Web 轻量化 3D 数字孪生数据中心解决方案

一、技术架构&#xff1a;HT for Web 的核心能力 图扑软件自主研发的 HT for Web 是基于 HTML5 的 2D/3D 可视化引擎&#xff0c;核心技术特性包括&#xff1a; 跨平台渲染&#xff1a;采用 WebGL 技术&#xff0c;支持 PC、移动端浏览器直接访问&#xff0c;兼容主流操作系统…

CIO大会, AI课笔记手稿分享

能认真听课的CIO不多了 能认真听课的CIO还能记笔记的不多了 能认真听课的CIO还能记笔记的字写得好的不多了

stl三角面元文件转颗粒VTK文件

效果展示&#xff1a; import os import sys import json import argparse import numpy as np import pandas as pd import open3d as o3d from glob import globPARTICLE_RADIUS 0.025def stl_to_particles(objpath, radiusNone):if radius is None:radius PARTICLE_RADIU…

vue为什么点击两遍才把参数传递过去

先说一下场景&#xff0c;就是我把云服务器这个下拉选择框分别初始化之后&#xff0c;然后点击新建权限然后就打开了右侧的抽屉式的对话框&#xff0c;页面上那个文字信息是传递过来了。那个是正确的&#xff0c;但是我请求接口的时候&#xff0c;发现请求的接口的参数总是要慢…

NodeMediaEdge通道管理

NodeMediaEdge任务管理 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 在未使用NodeMediaServer的情况下&#xff0c;或者对部分视频流需要单独推送的需求&#xff0c;也可…

2025年- H59-Lc167--207.课程表(拓扑排序、BFS)-需二刷--Java版

1.题目描述 2.思路 记录每门课程的前置课程数量&#xff0c;记录每门课程是哪些课程的前置课程。 &#xff08;1&#xff09;如果有向图中的拓扑图中存在环&#xff0c;则说明所有的课程是无法完成的。 &#xff08;2&#xff09;使用拓扑排序&#xff0c;在图中每个节点的入度…

MQTT的Thingsboards的使用

访问云服务 https://thingsboard.cloud/ 新建一个设备 弹出 默认是mosquittor的客户端。 curl -v -X POST http://thingsboard.cloud/api/v1/tnPrO76AxF3TAyOblf9x/telemetry --header Content-Type:application/json --data "{temperature:25}" 换成MQTTX的客户…

代码随想录算法训练营第60期第五十二天打卡

大家好&#xff0c;昨天我们重点讲解了单调栈的问题&#xff0c;我们今天的题目还是继续围绕单调栈展开&#xff0c;我们上节课其实对单调栈已经有了大致的了解&#xff0c;今天的第一道题目大家务必要注意很重要&#xff0c;接雨水问题我们会涉及到单调栈与双指针&#xff0c;…

新能源集群划分+电压调节!基于分布式能源集群划分的电压调节策略!

适用平台&#xff1a;MatlabYalmip Cplex (具体操作已在程序文件中说明) 参考文献&#xff1a;基于分布式能源集群化分的电压调节策略[D]. 一、文献解读 1. 主要内容/创新点 提出了一种基于分布式能源集群化的电压调节策略&#xff0c;计及分布式能源的有功、无功调节能力&a…

【C++】22. 红黑树封装实现Mymap和Myset

上一章节我们实现了红黑树&#xff0c;这一章节我们就用红黑树封装来实现一个我们自己的map和set 1. 源码及框架分析 SGI-STL 3.0版本的源代码中&#xff0c;map和set的实现主要分布在若干头文件中&#xff0c;这些头文件构成了这两个容器的完整实现架构&#xff1a; 核心头文…

论文速读《UAV-Flow Colosseo: 自然语言控制无人机系统》

论文链接&#xff1a;https://arxiv.org/abs/2505.15725项目主页&#xff1a;https://prince687028.github.io/UAV-Flow/ 0. 简介 近年来&#xff0c;无人机技术蓬勃发展&#xff0c;但如何让无人机像智能助手一样理解并执行人类语言指令&#xff0c;仍是一个前沿挑战。现有研…

关于表连接

目录 1.左连接 2.右连接 3.内连接 4.全外连接 5.笛卡尔积 -- 创建表A CREATE TABLE A(PNO VARCHAR2(10) PRIMARY KEY, PAMT NUMBER, A_DATE DATE);-- 向表A插入数据 INSERT INTO A VALUES (01001, 100, TO_DATE(2005-01-01, YYYY-MM-DD)); INSERT INTO A VALUES (010…

【面试 - 遇到的问题 - 优化 - 地图】腾讯地图轨迹回放 - 回放的轨迹时间要和现实时间对应(非匀速)

目录 背景轨迹回放 - 匀速效果图TrackPlaybackDialog.vue 代码TMapNew.vue 代码 轨迹回放 - 非匀速效果图TrackPlaybackDialog.vue 代码TMapNew.vue 代码 背景 腾讯地图轨迹回放是匀速回放的&#xff0c;但是客户要求根据现实时间&#xff0c;什么时间点在某个点位 【腾讯地图轨…

Python Day37 学习

&#xff08;补充学习几个知识点&#xff09; 1. 异常处理机制 摘自讲义 常见异常报错 2. debug 理解一下几种错误 SyntaxError 语法错误 代码不符合Python的语法规则 错误代码示例 NameError 名称错误 尝试使用一个未被定义的变量、函数或对象的名称。 TypeError 类型错…

打破建筑管理壁垒,IBMS智能系统赋能现代建筑协同增效

在建筑行业快速发展与智能化转型的进程中&#xff0c;传统建筑管理模式正面临前所未有的挑战。各子系统独立运行形成的“信息孤岛”、部门间沟通不畅导致的协作低效&#xff0c;以及管理决策缺乏数据支撑等问题&#xff0c;严重制约了建筑的运营效率与服务质量。而IBMS&#xf…

十四: 导数,数值微分,偏导数,梯度

在前一章说明损失函数的用途时,引入了梯度,导数等名词,现在我们详细了解一下这些名词 1. 导数 假如你是全程马拉松选手&#xff0c;在开始的 10 分钟内跑了 2 千米。如果要计算此时的奔跑速度&#xff0c;则为 2/10 0.2&#xff3b;千米 / 分&#xff3d;。也就是说&#xf…

深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)

树的概念及结构: 树是一种非线性的数据结构&#xff0c;它是由n>0个有限结点组成的一个有层次关系的集合&#xff0c;把它叫做树是因为像一个倒挂的树&#xff0c;根在上&#xff0c;叶子在下 对于树&#xff0c;每颗树都可以看成根节点和子树&#xff0c;所有的子树又可以…

Replacing iptables with eBPF in Kubernetes with Cilium

source: https://archive.fosdem.org/2020/schedule/event/replacing_iptables_with_ebpf/attachments/slides/3622/export/events/attachments/replacing_iptables_with_ebpf/slides/3622/Cilium_FOSDEM_2020.pdf 使用Cilium&#xff0c;结合eBPF、Envoy、Istio和Hubble等技术…

基于NXP例程学习CAN UDS刷写流程

文章目录 前言1.概述1.1 诊断报文 2.协议数据单元(N_PDU)2.1 寻址信息&#xff08;N_AI&#xff09;2.1.1 物理寻址2.1.2 功能寻址2.1.3 常规寻址&#xff08;Normal addressing&#xff09;2.1.4 常规固定寻址&#xff08;Normal fixed addressing&#xff09;2.1.5 扩展寻址&…