C++类的拷贝(复制)构造函数深入理解

C++中调用复制拷贝)函数的三种情况 1.同一中的对象1复制给对象2: 同样是Point p1; Point p2; 例如: int main(){ Point p1(1,2); Point p2=p1; //这两种都会调用复制构造函数 Point p3(p1); return 0; } 2.以对象为函数的形参: 例如: void fun(Point p){ //p 作为了形参 cout<<p.height<<endl; } 3.函数返回是的对象: void fun2(){ Point 阅读详情

目录

一、拷贝构造函数的基本了解和使用

二、拷贝构造函数的一些注意事项

三、 拷贝构造函数的调用时机

①使用一个对象 “直接构造(显式构造 )” 或 “初始化(隐式构造 )”另一个同类对象

关于拷贝构造函数与赋值函数的区别与联系

②作为函数的形式参数时

 ③作为函数的返回值

 四、深拷贝与浅拷贝的区别与联系

五、总结:拷贝构造函数的难点主要是:


一、拷贝构造函数的基本了解和使用

①拷贝构造函数又被称为复制构造函数,是一种特殊的构造函数,它被/编辑器/在一个对象初始化另一个对象时调用。

②拷贝构造函数的形参列表上需要加上const来防止被引用的对象的值发生改变,不加也可以,但是不加const,会使代码显得不规范。

代码示例:

class Test{
 public:
 /*const 为了防止引用对象被修改
 也可以不写const,而是直接写 Test(Test &obj){}
 但是写const更加规范一些*/
 Test(const Test&obj)//拷贝构造函数无返回值,参数为本类对象的引用。
 {
     //函数体里面一般只写赋值语句。
 }   
}

二、拷贝构造函数的一些注意事项

①拷贝构造可以形成重载,但必须第一个形参为当前类的对象的引用(不建议对其
函数进行加参数重载)。

②如果类设计者没有显式写出拷贝构造函数,编辑器会给出一个默认拷贝构造函数,但是这个默认拷贝构造函数只能够进行浅拷贝的操作,如果类设计者需要进行深拷贝的操作,那么需要自行设计。

三、 拷贝构造函数的调用时机

①使用一个对象 “直接构造(显式构造 )” 或 “初始化(隐式构造 )”另一个同类对象

#include<iostream>

using namespace std;

class test
{
public:
    test() {
        cout << "调用默认构造函数" << " "<<this<<endl;/*利用this指针更清晰的观察编辑器创建对象和析构的具体过程*/
    }
    test(const test& obj)//写const标准一些
    {
        cout << "调用了拷贝构造函数" << " "<<this<<endl;/*一般里面只写赋值语句,但是初学者可以在拷贝构造函数体里面写这条语句以便观察什么时候调用了拷贝构造函数。*/
    }
    ~test() {
        cout << "调用了析构函数" << " "<<this<<endl;
    }
};
int main()
{
    //直接定义obj_1对象,会调用构造函数test()
    test obj_1;
    //用obj_1对象显式构造(直接构造)obj_2对象,会调用拷贝构造函数test(const test& obj)
    test obj_2(obj_1);
    //用obj_1对象隐式构造(初始化)obj_3对象,会调用拷贝构造函数test(const test& obj)
    test obj_3 = obj_1;
    //这里涉及到拷贝构造函数与赋值函数的知识点 
    return 0;
}
第8.1节 满足构网要求的功率器件与散热设计 摘要: 构网型变流器的功率器件选型与散热设计面临严苛要求,需综合考虑过载能力、暂态应力与可靠性。IGBT模块选型需重点评估电压/电流等级、损耗特性及结温波动,而SiC MOSFET虽具有高频低损耗优势,但面临栅极可靠性等挑战。散热设计需采用液冷等先进技术控制结温波动,并通过电热应力仿真和寿命预测实现可靠性优化。系统化选型流程需结合规范要求、工况谱分析和实测验证,为构网型变流器提供坚实的物理基础。 阅读详情

相关推荐

【干货攻略】Oracle报错篇 ORA-01378 磁盘扇区大小不兼容问题

本期将为大家分享“ORA-01378 磁盘扇区大小不兼容”报错的问题解决方案。

PWY13148的专栏 1412

C++编程实现文件拷贝功能

打开文件后,就可以从文件中读取或向文件中写入数据。C++标准库提供了两种型的流:输入流(istream)和输出流(ostream)。本文中我们介绍了C++文件流的基本概念,并给出了基于文件流实现文件拷贝的代码。文件拷贝C++编程中一个重要而常见的应用场景,掌握文件流操作对于C++程序员来说是必不可少的。在C++编程中,文件读写操作是常见的功能之一。而文件拷贝功能则是文件读写操作的一个重要应用场景。本篇文章将基于文件流来实现C++文件拷贝功能。分别打开输入文件和输出文件,并使用。二、文件拷贝代码实现。

CodeWhizZ的博客 1796

C++内存管理之堆栈区别、拷贝memcpy、分配malloc 与释放free

C++内存管理之拷贝memcpy、分配malloc 与释放free

yohnyang的博客 5752

C++对象拷贝

首先看下面这张图:假设我们现在有一个对象数组,里边有三个对象,O1、O2和O3;但是随着业务逻辑的提升,这三个对象已经无法满足我们的使用了;那么我们肯定要再添加几个对象进去,但是我们又不想重新创建O1、O2、O3;那么怎么办呢?首先在C语言中,我们肯定是用一些拷贝函数之的,通过赋值拷贝一个对象的内容拷贝给另一个对象进行使用;这个过程就叫对象拷贝;当然C++中也有拷贝对象内容的方式,并且C++的编译器支持我们用更简单的方式进行内存复制,接下来就让我们看看C++中如何实现对象拷贝

qq_52572621的博客 3232

C++拷贝控制

C++拷贝控制 转自:https://www.cnblogs.com/ronny/p/3734110.html 1,什么是拷贝控制 当我们定义一个的时候,为了让我们定义的型像内置型(char,int,double等)一样好用,我们通常需要考下面几件事: Q1:用这个的对象去初始化另一个型的对象。 Q2:将这个的对象赋值给另一个型的对象。 Q3:让这个的对象有生命周期,比如局部对象在代码部结束的时候,需要销毁这个对象。 因此C++就定义了5种拷贝控制操作,其中2个移动操作是C+

weixin_44966641的博客 1241

C++的特殊成员-默认/拷贝/移动构造函数

详细讲解的默认构造函数拷贝/移动构造函数,以及拷贝赋值和移动赋值等操作。

shenwanjiang111的专栏 1万+

拷贝构造函数(拷贝)示例

#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Student{ public: Student(string name = "", int age = 0, float score = 0.0f); //普通构造函数 Student(const Student &amp...

开发笔记 910

拷贝构造函数拷贝赋值函数例子

#include struct aa { int num = 2; double d = 1.23; }; class ABC { public: ABC(); ~ABC(); ABC(ABC &abc);//拷贝构造函数 ABC& operator= (const ABC& abc);//拷贝赋值函数 void set(int num, double d) { a.nu...

qq_38689346的博客 292

拷贝构造函数的写法

以class Vector 为例 Vector::Vector(const Vector& a){this->setlenth(a.length);for(int i=0;i<a.length;i++)this->p[i]=a.p[i];} 转载于:https://www.cnblogs.com/jarmine/p/6909007.html...

azbwjcq85088582的博客 1288

构造函数和析构函数

对象的初始化 某个的对象之间都有哪些不同呢?首先是对象名不同,其次就是对象的数据成员的值不同。我们在声明一个对象时,也可以同时给它的数据成员赋初值,称为对象的初始化。 构造函数 我们在声明一个变量时,如果对它进行了初始化,那么在为此变量分配内存空间时还会向内存单元中写入变量的初始化。 声明对象有相似的过程,程序执行时遇到对象声明语句时会向操作系统申请一定的内存空间来存放这个对象,但是它能像一般变量那样初始化时写入指定的初始值吗?的对象太复杂了,要实现这一点不太容易,这就需要构造函数来实现。 构造函数的作

qq_36314864的博客 1359

C++primer 第13章 复制控制

复制构造函数,赋值操作符,系够函数总称复制控制 能够准确无误地编写出String构造函数拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上!在这个中包括了指针成员变量m_data,当中包括指针成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款。仔细学习这个,特别注...

weixin_34072159的博客 104

与对象(中)

本文介绍了C++中编译器自动生成的六个默认成员函数:1)构造函数用于对象初始化;2)析构函数负责资源清理;3)拷贝构造函数实现对象复制;4)赋值运算符重载支持对象赋值;5)const成员函数确保不修改对象状态;6)取地址操作符重载提供对象地址访问。重点分析了构造函数的重载形式、析构函数的调用时机、拷贝构造函数的引用参数特性、赋值运算符的连续赋值支持,以及const成员函数对this指针的修饰作用。这些默认成员函数构成了C++的基础功能框架,编译器会在未显式定义时自动生成默认实现。

Lauv898的博客 853

Problem A: 平面上的点——Point (III)

Description 在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。现在我们封装一个“Point”来实现平面上的点的操作。 根据“append.cc”,完成Point的构造方法和show()方法,输出各Point对象的构造和析构次序。实现showPoint()函数。 接口描述: showPoint()函数按输出格式输出Point对象,调用Point::show()方法实现...

weixin_43400733的博客 347

第九周项目一-深体验复制(2)

/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年4月24日 *版 本 号:v1.0 * *问题描述:阅读程序,增加复制构造函数 *输入描述: *程序输出: */ #include #include using namespace std; c

wangrui813的博客 280

c++的6个默认的成员函数

  根据下面的代码你可以更好的理解这6个函数,要看概念可以参考我的前面几篇博客 class Test { public: Test(int a = 0) { cout &lt;&lt; "构造函数" &lt;&lt; this &lt;&lt; endl; date = a; } Test(const Test&amp;t) { cout &lt;&lt; "拷贝构造"

qq_41148509的博客 196

C++ 与对象中的深入知识(的默认成员函数)

关于和对象的重要知识点总结

溟洵的博客 728

C++与对象(2)

转载自:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/07/24/2115041.html   接着上一节,今天讲C++构造函数与析构函数,对象的赋值与复制.   1.用过C#语言的人,都知道构造函数是一种特殊的成员函数,它主要用于对对象分配空间,进行初始化。构造函数的名字必须与名相同。可以有任何型的参数,但不返回任何值,是在建立

wvtear的专栏 597

与对象(中) 详细讲解的六个默认成员函数,认真看一定会有收获

目录前言一、的六个默认成员函数二、构造函数1.概念2.特性三、析构函数1.概念2.特征四、拷贝构造函数1.概念2.特征五、赋值运算符重载1.运算符重载概念2.实现赋值运算符重载六、const修饰的成员函数七、取地址及const取地址操作符重载总结前言哈喽,大家好,相信看了我上一篇博客的小伙伴已经对和对象有了一些初步认识,今天我将着重介绍里面的默认成员函数,希望想要了解的小伙伴不要走开哦。一、的六个默认成员函数如果一个里面什么成员都没有,我们一般会把它简称为空。但空里真的什么都没有吗?当然不是

weixin_59371851的博客 1868

C++学习笔记二

7、的定义格式(续)   >在体中不允许对所定义的数据成员进行初始化:    class TDate    {          public:       ....   private:     int year(1998),month(4),day(9);    };   >中的数据成员的型可以是任意的:    1.包括整型、浮点型、数组、指针和引用等;    2

liuwei423210896的专栏 383

C++进阶之路:何为拷贝构造函数深入理解拷贝与深拷贝与对象_中篇)

这意味着拷贝后的对象和原始对象共享同一块内存,当其中一个对象修改了内存中的值时,另一个对象也会受到影响。然而,当一个拥有指针或引用等需要特别注意的成员变量时,编译器生成的默认拷贝构造函数不能保证正确的深拷贝,会导致浅拷贝问题和内存泄漏等问题。需要特别注意的是,如果中包含指针或资源管理的成员变量(如动态分配的内存),则需要手动实现深拷贝以确保正确的对象复制和资源释放。因此,当中存在指针或资源管理的成员变量时,通常需要自定义拷贝构造函数和赋值运算符,以实现深拷贝,避免出现潜在的问题。

Srlua的博客 2889

精心整理-2025 DeepSeek 精品学习资料合集-共50份(教程+原理解读+行业应用+技术实践).zip

2025 DeepSeek 精品技术资料合集,包含技术报告、使用教程、原理解读、行业应用、模型部署、开发实战、科研赋能、职场应用、创业机会、AIGC结合、数据资产管理和市场分析等多个方面。1-DeepSeekR1技术报告_22页.pdf2-DeepSeekV3技术报告_53页.pdf3-DeepSeek与AIGC应用_北京大学_99页.pdf4-2025年DeepSeek-R1及强推理模型开发解读报告_北京大学_76页.pdf5-大模型概念、技术与应用实践(一文读懂大模型)_厦大团队_140页.pdf6-DeepSeek模型优势算力成本角度解读报告_浙江大学_24页.pdf7-DeepSeek与DeepSeek-R1专业研究报告_38页.pdf8-提示词工程和落地场景_北京大学_86页.pdf9-DeepSeek-回望AI三大主义与加强通识教育_浙江大学_52页.pdf10-DeepSeek大模型赋能高校教学和科研报告_厦大团队_124页.pdf11-2025年DeepSeek使用教程蓝皮书_全球数据资产理事会_35页.pdf12-2025深度解读DeepSeek原理与效应_天津大学_44页.pdf13-DeepSeek 从入门到精通_清华_104页.pdf14-我们该如何看待DeepSeek_湖南大学_82页.pdf15-DeepSeek入门宝典-个人使用篇_51CTO_19页.pdf16-DeepSeek入门宝典-技术解析篇_51CTO_22页.pdf17-DeepSeek入门宝典-开发实战篇__51CTO_25页.pdf18-DeepSeek入门宝典-行业应用篇_51CTO_18页.pdf19-2025年DeepSeek模型本地部署简介_智灵动力_55页.pdf20-DeepSeek完全实用手册V1.0-从技术原理到使用技巧_至顶AI实验室_117页.pdf21-深入浅出讲解Deepseek(含部署)-47页.pdf22-详解DeepSeek模型训练优化及数据处理的技术精髓_腾讯云——23页.pdf23-2025年DeepSeek自学手册-从理论模型训练到实践模型应用_@ai呀蔡蔡_73页.pdf24-DeepSeek15天指导手册从入门到精通_24页.pdf25-DeepSeek V3 搭建个人知识库教程2025_6页.pdf26-ChattingorActing-DeepSeek的突破边界与浙大先生的未来图景_浙江大学_86页.pdf27- 从DeepSeek探讨大语言模型在建筑及能源行业的应用趋势和技术方法报告_ 浙江大学_81页.pdf28-2025年DeepSeekDeepResearch让科研像聊天一样简单_清华大学北航_86页.pdf29-2025年DeepSeek行业应用实践报告_智灵动力_112页.pdf30-DeepSeek与AIGC应用_北京大学_99页.pdf31-DeepSeek给我们带来的创业机会-清华大学_76页.pdf32-DeepSeek如何赋能职场应用_清华大学_75页.pdf33-DeepSeek与AI幻觉报告_清华大学_38页.pdf34-普通人如何抓住DeepSeek红利_清华大学_64页.pdf35-DeepSeek DeepResearch应用报告_清华大学_59页.pdf36-2025数据资产全过程管理解锁DeepSeek智能引擎报告_全球数据资产理事会_63页.pdf37-围绕DeepSeek尖刀点加速打造AI产业刀锋链_鼎帷咨询_39页.pdf38-DeepSeek 7大场景+50大案例+全套提示词 从入门到精通干货_觉醒学院xAI流量坊_112页.pdf39-DeepSeek对于科技和更广义经济的含义是什么?_摩根斯坦利_70页.pdf40-2025年DeepSeeK开启AI算法变革元年_甲子光年_17页.pdf41-2025年DeepSeeK开启AI算法变革元年报告_甲子光年_16页.pdf42-2025年DeepSeek行业应用案例集解锁智能变革密码_浙江大学_153页.pdf43-DeepSeek带动国产专用芯片、AIDC、物联网等板块景气度攀升_国金证券_11页.pdf44-Deepseek国产AI应用的诺曼底时刻-华西证券_33页.pdf45-DeepSeek惊艳世界,算力与应用将迎来结构性变化_东方证券_18页.pdf46-DeepSeek题材持续发酵,模型迭代加速推进_上海证券_10页.pdf47-DeepSeek重塑开源大模型生态AI应用爆发持续推升算力需求-国信证券_42页.pdf48-大模型步入开源 免费时代,运营商接入DeepSeek拓展新业务_国信证券_17页.pdf49-为什么DeepSeek最受益方向是云产业链_民生证券_28页.pdf50-AI人工智能基地2025DeepSeek爆火详细报告_71页.pdf

上一篇: C++拷贝构造函数—类临时对象的构建与析构
下一篇: C++运算符重载
flendliy
博客等级 码龄5年 3粉丝 3原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值