当前位置: 首页 > article >正文

C++核心:构造、析构与拷贝构造全解析

C 类的默认成员函数构造、析构与拷贝构造1. 构造函数 (Constructor)作用在对象创建时初始化成员变量分配资源特点函数名与类名相同无返回类型可重载支持不同参数列表默认构造函数无参或所有参数有默认值初始化列表优先于函数体执行效率更高class Person { public: // 带默认参数的构造函数 Person(int a 0, string n ) : age(a), name(n) { cout 构造函数调用 endl; } private: int age; string name; };2. 析构函数 (Destructor)作用对象销毁时自动调用释放资源如动态内存、文件句柄特点函数名为~类名无参数无返回值不可重载每个类唯一系统自动调用栈对象离开作用域/堆对象被delete时class Data { public: Data() { ptr new int[100]; } // 构造函数分配资源 ~Data() { delete[] ptr; // 析构函数释放资源 cout 析构函数调用 endl; } private: int* ptr; };3. 拷贝构造函数 (Copy Constructor)作用用同类型对象初始化新对象深拷贝场景必需特点函数签名类名(const 类名 obj)三种调用场景对象初始化Person p2 p1;函数传参func(Person p)函数返回对象编译器优化后可能不调用深拷贝示例class String { public: String(const char* s ) { len strlen(s); str new char[len1]; strcpy(str, s); } // 拷贝构造函数深拷贝 String(const String other) : len(other.len) { str new char[len1]; strcpy(str, other.str); } ~String() { delete[] str; } private: char* str; int len; };4. 综合示例class Student { public: // 构造函数 Student(string n, int i) : name(n), id(i) { scores new int[3]{0}; } // 拷贝构造函数 Student(const Student s) : name(s.name), id(s.id) { scores new int[3]; memcpy(scores, s.scores, 3*sizeof(int)); } // 析构函数 ~Student() { delete[] scores; cout 释放学生资源: name endl; } private: string name; int id; int* scores; }; // 使用示例 int main() { Student s1(Alice, 1001); // 构造函数 Student s2 s1; // 拷贝构造函数 return 0; // 析构函数自动调用s2先于s1 }5. 关键注意事项默认生成规则若未显式定义编译器自动生成默认版本自动生成的拷贝构造函数执行浅拷贝指针复制地址三/五法则若需要自定义析构函数、拷贝构造函数或拷贝赋值运算符之一通常需要同时定义三者explicit关键字禁止单参数构造函数的隐式转换explicit Person(int a); // 阻止 Person p 20; 的隐式转换移动语义C11使用右值引用实现资源转移本主题进阶内容

相关文章:

C++核心:构造、析构与拷贝构造全解析

C 类的默认成员函数:构造、析构与拷贝构造1. 构造函数 (Constructor)作用:在对象创建时初始化成员变量,分配资源特点:函数名与类名相同,无返回类型可重载(支持不同参数列表)默认构造函数&#x…...

一键备份QQ空间十年记忆:GetQzonehistory免费开源工具完整指南

一键备份QQ空间十年记忆:GetQzonehistory免费开源工具完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否还记得十年前在QQ空间写下第一条说说的心情&#xff1f…...

MIUI自动任务工具完整指南:如何轻松实现小米社区自动化签到

MIUI自动任务工具完整指南:如何轻松实现小米社区自动化签到 【免费下载链接】miui-auto-tasks 一个自动化完成小米社区任务的脚本 项目地址: https://gitcode.com/gh_mirrors/mi/miui-auto-tasks 你是否厌倦了每天手动打开小米社区APP,重复点击签…...

第 9 课:堆(Heap)—— 解决 Top K 问题的神器,优先级队列的底层实现

这是面试绝对高频考点,没有之一。几乎所有 "找前 K 个最大 / 最小元素" 的问题,最优解都是堆。这一课你会明白:堆是专门为 "快速获取最值" 这个单一需求设计的数据结构,它用最简单的结构,实现了最…...

统计假设检验入门:原理、应用与Python实现

1. 统计假设检验入门指南在数据分析的世界里,原始数据本身就像一堆未经雕琢的钻石原石——它们蕴含着价值,但需要专业的切割和打磨才能展现真正的光彩。统计假设检验就是我们用来"切割"数据的专业工具之一。作为一名从业多年的数据分析师&…...

HDFS 数据块(Block)机制深度解析:从原理到实战

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…...

从Opal到Pyrite:深入解析TCG存储安全标准的演进与选型

1. 从机械硬盘到自加密:存储安全的技术演进 记得十年前我第一次接触企业级数据安全时,大多数公司还在使用传统的机械硬盘配合软件加密方案。每次服务器重启都要等待漫长的解密过程,性能损耗高达30%以上。直到2012年第一次接触到支持TCG Opal标…...

【YOLOv5改进实战】BiFPN加权融合:从理论到代码,实现目标检测精度飞跃

1. BiFPN为什么能成为目标检测的"涨点神器"? 第一次接触BiFPN是在处理工业质检项目时遇到的痛点——小目标漏检率居高不下。当时试过各种数据增强和调参手段,效果都不理想,直到尝试用BiFPN替换原生的PANet,mAP直接提升了…...

RAGFlow源码解析-2、从源码构架ragflow v0.25.0镜像

一、背景 官方 RAGFlow 提供了标准的 Docker 镜像 infiniflow/ragflow:v0.25.0,但当我们对 Python 后端或 Web 前端进行了自定义修改(主要是DOC_ENGINE和关系数据库都换成seekdb)后,需要重新打包镜像。 本文记录了从零开始构建自定义镜像 lt/ragflow:0.25.0 并成功部署的…...

数学分析学习路径全解析(2024.04.20)

1. 数学分析学习路径全景图 数学分析作为现代数学的基石,常常让初学者望而生畏。我见过太多同学在图书馆抱着厚厚的教材一筹莫展,也辅导过不少考研学生如何突破学习瓶颈。经过这些年的教学实践,我总结出一个黄金法则:选对路径比盲…...

OceanGPT/OceanGym:基于AI与强化学习的海洋智能体仿真训练平台

1. 项目概述:当大模型遇上海洋模拟器最近在AI和海洋科学交叉领域,一个名为“OceanGPT/OceanGym”的项目引起了我的注意。乍一看,这像是一个将大型语言模型(GPT)与海洋环境模拟(Gym)结合的尝试&a…...

spring ai alibaba原理源码分析(一)-架构

简介 spring ai alibaba是java的ai agent框架&#xff0c;本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理&#xff0c;不仅指导agent的开发&#xff0c;更为了改造框架&#xff0c;增加新特性 系列内容&#xff1a; 系列(一) 架构 本文<< 系列(二) agent…...

TestDisk PhotoRec:专业级数据恢复工具如何拯救你的丢失文件与分区

TestDisk & PhotoRec&#xff1a;专业级数据恢复工具如何拯救你的丢失文件与分区 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 在数字时代&#xff0c;数据恢复工具TestDisk和PhotoRec已成为技术爱好者…...

移动端架构演进与选型

移动端架构演进与选型&#xff1a;从单体到模块化的技术探索 移动互联网的快速发展对移动端架构提出了更高要求。从早期的单体架构到如今的模块化、组件化设计&#xff0c;移动端架构的演进始终围绕性能、可维护性和动态化展开。面对业务复杂度的提升&#xff0c;如何选择合适…...

Arm Cortex-A55浮点与SIMD架构深度解析

1. Cortex-A55浮点与SIMD架构概述在移动计算和嵌入式系统领域&#xff0c;Arm Cortex-A55作为一款高效的中端处理器核心&#xff0c;其浮点运算单元(FPU)和单指令多数据(SIMD)扩展功能对性能有着决定性影响。A55的浮点架构支持从半精度(16位)到双精度(64位)的多种数据格式&…...

BilldDesk终极指南:打破远程控制边界,开启跨平台协作新纪元![特殊字符]

BilldDesk终极指南&#xff1a;打破远程控制边界&#xff0c;开启跨平台协作新纪元&#xff01;&#x1f680; 【免费下载链接】billd-desk 基于Vue3 WebRTC Nodejs Flutter搭建的远程桌面控制、游戏串流 项目地址: https://gitcode.com/gh_mirrors/bi/billd-desk 还…...

GPU加速与树模型在制造业数据科学中的应用

1. 制造业数据科学中的GPU加速训练概述在半导体制造和芯片测试领域&#xff0c;每天产生的结构化数据量通常达到TB级别。以某8英寸晶圆厂为例&#xff0c;单条产线每月可产生超过500万条测试记录&#xff0c;每条记录包含300-500个特征参数。面对如此庞大的数据规模&#xff0c…...

Rust智能指针BoxRcArc使用场景

Rust作为一门注重内存安全的系统级编程语言&#xff0c;其所有权机制是核心特性之一。然而在实际开发中&#xff0c;有时需要更灵活地管理数据生命周期或共享数据&#xff0c;这时智能指针便成为关键工具。Rust提供了多种智能指针类型&#xff0c;其中Box、Rc和Arc是最常用的三…...

如何在5分钟内让PS4游戏体验翻倍?GoldHEN作弊管理器深度解析

如何在5分钟内让PS4游戏体验翻倍&#xff1f;GoldHEN作弊管理器深度解析 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager 还在为游戏中的难关卡住而烦恼吗&#xff1f;想要体验《血…...

6G时代AI原生网络与数字孪生技术实践

1. 无线通信行业的AI原生革命5G商用化进程尚未完全铺开&#xff0c;6G研发的号角却已吹响。作为深耕通信行业十五年的技术老兵&#xff0c;我亲眼见证了从3G到4G的过渡期&#xff0c;运营商和设备商们手忙脚乱地应对流量洪流&#xff1b;也经历了5G标准制定阶段&#xff0c;各家…...

基于多模态大模型的手机自动化新范式:从视觉理解到精准操作

1. 项目概述&#xff1a;当你的手机学会自己“点”屏幕 最近在跟几个做移动端测试和自动化的朋友聊天&#xff0c;大家普遍头疼一个问题&#xff1a;现在App功能越来越复杂&#xff0c;UI元素动态加载、嵌套层级深、甚至有些组件压根不暴露可访问性信息&#xff0c;传统的基于控…...

DDrawCompat:三步搞定Windows经典游戏兼容性问题的终极方案

DDrawCompat&#xff1a;三步搞定Windows经典游戏兼容性问题的终极方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/D…...

深度解析:基于异构计算的工业级AI视频中台架构,如何实现GB28181/RTSP跨平台部署与源码交付?

在安防行业进入智能化深水区的今天&#xff0c;开发者面临的痛点已从“如何调通视频流”转向“如何适配碎片化的底层硬件”。面对 NVIDIA GPU、瑞芯微 NPU、华为海思、算能等异构芯片&#xff0c;集成商往往需要投入海量人力进行 SDK 二次封装和驱动调试。 本文将从架构师视角…...

Legacy-iOS-Kit终极指南:如何让旧款iOS设备重获新生

Legacy-iOS-Kit终极指南&#xff1a;如何让旧款iOS设备重获新生 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit Le…...

让ai执行多轮行动可以把任务变成限定长度的操作,让ai填空,比如我3d模型可以参数化全部给ai,ai返回修改后完全的模型

这个思路其实在多个领域都有对应的研究工作。我找到了一些相关的论文&#xff1a; PaperAuthorsSummaryCraftsMan3D: High-fidelity Mesh Generation with 3D Native Generation and Interactive Geometry RefinerTencent AI Lab et al.用迭代refiner来优化3D几何——生成初始…...

16位混合架构DAC设计:高速高精度转换技术解析

1. 混合架构DAC设计概述在当今的无线通信和视频处理系统中&#xff0c;数字模拟转换器(DAC)作为连接数字信号处理与模拟世界的关键接口&#xff0c;其性能直接影响整个系统的表现。传统DAC架构往往需要在分辨率、速度和功耗之间做出妥协&#xff0c;而混合架构的出现为解决这一…...

3大架构决策:如何通过插件化设计让JD-GUI成为Java逆向工程的首选工具

3大架构决策&#xff1a;如何通过插件化设计让JD-GUI成为Java逆向工程的首选工具 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 在Java逆向工程领域&#xff0c;JD-GUI凭借其卓越的插件化架构&#xf…...

如何永久保存微信聊天记录?这款开源工具让你完全掌控个人数据资产

如何永久保存微信聊天记录&#xff1f;这款开源工具让你完全掌控个人数据资产 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendi…...

刘教链|80万枚BTC背后的机构暗战:贝莱德与Strategy谁在主导市场?

一觉醒来&#xff0c;BTC站上79k后暂时回守77k。2026年4月22日&#xff0c;BlackRock的iShares Bitcoin Trust&#xff08;IBIT&#xff09;持仓达到806,700枚比特币&#xff0c;价值约637亿美刀&#xff0c;创下该基金的历史新高[1]。这一数据出现在连续九个交易日净流入之后&…...

解决方案:Open WebUI自托管AI平台 - 企业级私有化部署与安全AI交互指南

解决方案&#xff1a;Open WebUI自托管AI平台 - 企业级私有化部署与安全AI交互指南 【免费下载链接】open-webui User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 项目地址: https://gitcode.com/GitHub_Trending/op/open-webui Open WebUI是一款功能丰…...