深拷贝(自己写拷贝构造函数),浅拷贝(默认的拷贝构造函数)

复制构造函数(深拷贝和浅拷贝) 复制构造函数介绍浅拷贝深拷贝 介绍 复制构造函数用于将一个对象复制到新对象中。它用于初始化过程中(包括按值传递函数),而不是常规的赋值过程中,类型如下: Class_name(const Class_name &); 它接受一个指向类对象的常量引用作为参数。对于复制构造函数,需要知道两点:何时调用和有和功能。 1.如何调用 创建一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。有四种方式 Person ob; Person ob1(ob);//1 Person ob2=ob;//2 P 阅读详情

#include <iostream>
#include <string>

using namespace std;

class student
{
private:
        char *m_name;
        int m_age;
public:
        //构造函数(如果不写构造函数,系统会调用默认构造函数)    
        student(char *name,int age)                
        {
            m_age = age;
            m_name = new char[20];            //C++申请内存空间
            // m_name = (char *)malloc(sizeof(char)*100);//C语言申请内存空间
            strcpy(m_name,name);
        }
        
        student(const student &p)                //拷贝构造函数
        {
            cout<<"-----copy-----"<<endl;
            m_age = p.m_age;
            m_name = new char[20];
            // m_name = (char *)malloc(sizeof(char)*100);
            strcpy(m_name,p.m_name);
        }
        
        ~student()                                //析构函数
        {
            m_age = 0;
            if(m_name != NULL)
            {
                // free(m_name);            //C语言释放内存空间
                delete[]m_name;            //C++释放内存空间
                m_name = NULL;
            }
        }
        
        void print()
        {
            cout<<"name :"<<m_name<<'\t'<<"age:"<<m_age<<endl;
        }
};

int main()
{
    student stu1("gg",13);            //调用构造函数
    stu1.print();
    
    student stu2(stu1);                //深拷贝,调用自己写的拷贝构造函数
    stu2.print();
    
    
    return 0;
}
 

 

拷贝构造函数 浅拷贝 深拷贝 拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数常用于: 通过使用另一个同类型的对象来初始化新创建的对象; 复制对象把它作为参数传递给函数; 复制对象,并从函数返回这个对象。 那么拷贝构造函数 ... 阅读详情

相关推荐

Python Pygame 游戏开发中的状态机设计

在游戏开发中,一个游戏往往包含多个不同的场景和状态,例如主菜单、游戏关卡、暂停界面、游戏结束界面等。状态机设计的目的就是为了有效地管理这些不同的状态,使得游戏的逻辑更加清晰、易于维护和扩展。本文的范围主要聚焦于如何在 Python Pygame 这个游戏开发库中实现和应用状态机设计,涵盖了从基本概念到实际项目应用的各个方面。本文将按照以下结构进行组织:首先介绍状态机的核心概念和联系,包括其原理和架构;接着详细讲解核心算法原理和具体操作步骤,并通过 Python 代码进行说明;

AI Python 编程之道的博客 1237

浅拷贝、深拷贝构造函数

1、 深浅拷贝是指深拷贝构造函数和浅拷贝构造函数。构造函数总共有三类:无参构造函数、有参数构造函数、拷贝构造函数。 2、 当有属性在堆区开辟的,一定要提供拷贝构造函数,防止浅拷贝带来的问题。(堆区需要手动的清除内存,如果没有去除,系统在结束后会去除。但是析构函数在系统结束之前执行,浅拷贝导致析构函数运行错误) 1、概念 无参构造函数,又称位默认构造函数,默认构造函数的意思是编译器会自动生成,不需要人工的手写。默认构造函数的要求是:函数名与类名相同,没有参数,没有返回值。 有参构造函数:有参数传递的构造.

qq_43363657的博客 895

别只盯着Spectre!Cadence Virtuoso里APS和Spectre X该怎么选?一份给模拟IC新手的指南

本文深入解析Cadence Virtuoso中的三大仿真引擎Spectre、APS和Spectre X,帮助模拟IC新手根据电路规模、精度需求和计算资源做出智能选择。通过对比技术指标和应用场景,提供射频电路、混合信号系统和电源管理IC的优化仿真策略,显著提升设计效率。

weixin_26841743的博客 707

【C/C++】拷贝构造函数——深拷贝和浅拷贝

一、拷贝构造函数 1、构造函数 用于初始化对象中的数据成员,无返回值类型并禁用return语句; 构造函数可以重载,因此一个类中可以有多个构造函数; 当类中显式的声明了构造函数后,不管该构造函数是否有参数,系统不会再生成默认的无参构造函数; 2、拷贝构造函数 负责由已知对象拷贝出新对象,其参数要求是一个类对象的const引用; 若类中未显式的声明拷贝构造函数,系统会自动生成一个默认的拷贝构造函数,并将类中所有的数据成员做浅拷贝; 当类中成员要做深拷贝时,默认的拷贝构造函数无用 拷贝构造函数的.

qq_34018840的博客 1050

【AI实战】用Coze工作流打造抖音视频文案提取神器——从单链接到批量处理的进阶指南

本文详细介绍了如何利用Coze工作流打造抖音视频文案提取工具,从单链接处理到批量提取的进阶指南。通过AI技术和工作流的结合,用户可以高效提取抖音视频的ASR和OCR文本,大幅提升内容创作效率。文章还涵盖了性能优化、异常处理及实际应用场景扩展,助力开发者快速实现抖音文案自动化提取。

weixin_29210759的博客 280

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

C/C++深浅拷贝构造函数

提要: 1.0 深浅拷贝,都是针对拷贝构造函数而言的。 2.0 深浅拷贝的区别是:在拷贝指针类型的数据成员的时候。 浅拷贝:拷贝ptr; 深拷贝:拷贝*ptr.—new 一块内存存放内容。 一、拷贝构造函数的声明: 1.0 拷贝构造: 用一个对象初始化同类型的另一个对象。 2.0 声明: Circle (Circle&); Circle (const Circle&); 3.0 带有默认参数的拷贝构造函数: Circle(const Circle&, int n =1); 4.

JuniorChestnut的博客 647

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

拷贝构造函数(复制构造函数)

赋值构造函数 用一个对象初始化另一个对象 特别注意:初始化操作和 等号操作是两个不同的概念 1、初始化法 Class A { public: A(int a) { m_a = a; } A(int a,int b) { m_a = a; m_b = b; } A(const A &...

代码黑洞 8867

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

MISAYAONE的博客 1707

别再瞎改网络结构了!解决YOLO小目标检测痛点,我用这招把mAP提了15%

本文基于我7年工业PCB缺陷检测、无人机航拍、安防监控项目的一线落地经验,针对YOLO小目标检测最痛的「漏检率高、特征丢失、精度难提升」三大核心问题,拆解出。本文全程配套小目标特征丢失原理图、分块训练流程图、切图前后效果对比图、mAP提升柱状图、多方案性能对比表等可视化内容,从YOLO天生不擅长小目标的底层根源、方案核心原理、可直接复制的代码实现,到工业场景实测验证、新手必踩的10个坑位避坑指南,全链路讲透。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 387

【C++】深入理解<深拷贝和浅拷贝>

本章的内容有: 什么是浅拷贝?什么是深拷贝?为什么要有深拷贝?如何理解浅拷贝和深拷贝?

翼同学 3059

osg点云加载与渲染

osg点云加载与渲染

cangqiongxiaoye的博客 821

c++深拷贝和浅拷贝

C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的;但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,所以,此时,必须采用深拷贝。 2 深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问

OneBaBa的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深拷贝与浅拷贝

深拷贝与浅拷贝是面试时经常遇到的问题,本篇文章通过实例,对该问题进行简要分析与总结。

道阻其长,未来可期。笔耕不辍,行则将至! 1138

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c++中的拷贝构造函数,浅拷贝,深拷贝

c++拷贝构造函数,深拷贝和浅拷贝

cyz322649的博客 1621

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

拷贝构造函数:默认拷贝(浅拷贝)、深拷贝构造函数

 一、 拷贝构造函数与构造函数的区别:      拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)--参考分析1。    拷贝构造函数与构造函数的区别:  class 类名  {  public:  类名(形参参数)//构造函数  类名(类名&对象名)//拷贝构造函数

hongzi的专栏 6877

C++拷贝构造函数:深拷贝和浅拷贝

1 拷贝构造函数 它是一种特殊的构造函数,由编译器调用来完成一些基于同一类的其他对象的构件及初始化。 1.1 拷贝函数的调用场景: 1、值传递传递函数体 2、值传递从函数体返回(返回匿名对象) 3、用一个对象初始化另一个对象 1.2 举例说明 1、值传递传递函数体 #include <iostream> using namespace std; public: int a; Test(int x){ a=x; } Test(...

奔跑的小仙女 5480

拷贝构造函数与深拷贝和浅拷贝

拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。 作用就是用来复制对象,在使用这个对象的实例来初始化这个对象的一个新的实例。类中可以存在多个拷贝构造函数。 拷贝构造函数的调用时机 当函数的参数为类的对象时 #include<iostream> using namespace std; class CExample { priva...

天行九歌 1450

C++ 浅拷贝、深拷贝、默认拷贝构造函数、自定义拷贝构造函数

一、默认拷贝构造函数、浅拷贝 当对一个已知对象进行拷贝时,编译系统会自动调用一种构造函数 —— 拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。 #include <iostream> using namespace std; class Student { private: int num; char *name; ...

weixin_41565755的博客 1394

c++拷贝构造函数(深拷贝,浅拷贝)详解

一、什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a;     而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。  下面看一个类对象拷贝的简单例子。    #include&lt;iostream&gt; using namespace std; class CExa...

weixin_34304013的博客 2344

C++ 拷贝构造函数 浅拷贝 深拷贝

拷贝构造函数的​​参数为本类对象的常量引用​​,格式为 ClassName(const ClassName &src)。若未显式定义,​​编译器会自动生成默认拷贝构造函数​​,执行​​浅拷贝​​(逐成员复制值)。

fukaiqiang 1425

[C++] 拷贝构造函数 && 深拷贝、浅拷贝

说明:在C++中,拷贝构造函数是一个特殊的构造函数,它用于创建一个新对象,这个新对象是另一个同类型对象的副本。拷贝构造函数通常接受一个参数,这个参数是对另一个对象的引用,并且这个引用是一个常量引用,以确保不会通过拷贝构造函数修改原始对象的状态。这里的MyClass是类的名称,other是传递给拷贝构造函数的常量引用参数,表示要拷贝的对象。拷贝构造函数的主要作用主要有3个,包括:创建对象副本:当你需要根据一个已存在的对象创建一个新的对象时,拷贝构造函数非常有用。

wangdsh的博客 1723

深拷贝和浅拷贝的区别

深浅拷贝的区别:     浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。     深拷贝是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型

Liudengdeng_的博客 3万+

默认拷贝构造函数,浅拷贝,深拷贝

类定义中,如果未提供自己的拷贝构造函数,则C++提供一个默认拷贝构造函数,就像没有提供构造函数时, C++提供默认构造函数一样。 C++提供的默认拷贝构造函数工作的方法是:完成一个成员一个成员的拷贝,如果成员是类对象,则调用 其拷贝构造函数或者默认拷贝构造函数。 /*-------------------------------------- 在默认拷贝构造函数中,拷贝的策略是逐

1881

【C++】拷贝构造函数、移动构造函数、浅拷贝与深拷贝

文章目录OOP拷贝构造函数浅拷贝与深拷贝 OOP 拷贝构造函数 A(const A & a); const:防止修改 &:不仅为了节省空间,更为了防止递归!这里是值传递。 #include <iostream> using namespace std; class CExample { int m_nTest; public: CExample(int x):m_nTest(x) //带参数构造函数 使用了初始化表的形式 { cou

m0_53632564的博客 1814
上一篇: 写自己的my_atoi()函数.
下一篇: 字符串逆序的深入,例句"i am from shanghai"改为"shanghai from am i"
晩风与她
博客等级 码龄9年 19粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值