C++ | 深拷贝与浅拷贝的认识和区别

本文介绍了C++中构造函数、拷贝构造函数的基本概念,并详细探讨了深拷贝和浅拷贝的区别。通过示例解释了浅拷贝可能导致的问题,强调深拷贝在资源管理上的重要性,以及如何通过自定义拷贝构造函数实现深拷贝。
摘要由CSDN通过智能技术生成

1、构造函数

在C++面向对象程序设计中,通过构造函数对对象进程初始化,它可以为对象在计算机内存中开辟内存空间,也可以为对象的数据成员提供初始值。构造函数时一个与类同名,没有返回值的特殊成员函数,每当创建一个对象时(包括使用new动态创建对象),编译系统就会自动调用构造函数。构造函数像类以外的一般函数和类成员函数一样,可以重载和带缺省参数,构造函数的重载为对象的生成提供了各种灵活的手段。

 构造函数分为缺省构造函数(默认构造函数)和用户自定义构造函数。当程序员没有定义构造函数时,系统就会提供一个无参的缺省构造函数,如果用户自定义了一个构造函数,编译器提供的缺省构造函数就自动消失了。

 

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

拷贝构造函数的功能是一个已有的对象来初始化一个被创建的同类的对象,是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类对象的引用。用户可以根据自己实际问题的需要定义特定的拷贝构造函数,以实现同类对象之间数据成员的传递。如果用户没有声明类的拷贝构造函数,系统就会自动生成一个缺省拷贝构造函数,这个缺省拷贝构造函数的功能是把初始的每个数据成员的值都复制到新建立的对象中。拷贝构造函数的声明如下:

        类名(类型 & 对象名);

class people

{

public:

        void dipalay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值