千家信息网

C++构造函数的类型,浅拷贝与深拷贝实例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本文小编为大家详细介绍"C++构造函数的类型,浅拷贝与深拷贝实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++构造函数的类型,浅拷贝与深拷贝实例分析"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2026年11月04日C++构造函数的类型,浅拷贝与深拷贝实例分析

本文小编为大家详细介绍"C++构造函数的类型,浅拷贝与深拷贝实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"C++构造函数的类型,浅拷贝与深拷贝实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、无参构造函数

1.如果没有定义构造函数,则系统自动调用此默认构造函数,且什么都不做。

2.如果用户自定义了带参数的构造函数,若还想调用无参的构造函数,必须显示定义

person() {        cout << "this object is being created." << endl;}

二、含参构造函数

一般构造函数可以有各种参数形式,一个类可以有多个一般构造函数,前提是参数的个数或者类型不同(基于c++的重载函数原理)

person(string ID, int age, int height, string sex) {        cout<<"含参构造函数调用"<< endl;        this.ID = ID;        this.age = age;        this.height = height;        this.sex = sex;}

含参的构造函数还可以使用快速初始化的方法:

person(string ID, int age, int height, string sex) : ID(ID), age(age), height(height), sex(sex) { }

注意:

  • 初始化参数列表和初始化顺序不可以变动

  • 变量名称(不是参数列表名称)一定要和成员变量名一样

三、拷贝构造函数

使用已经创建好的同一类对象,进行构造另一个对象。

person(const person &p) {        cout << "拷贝构造函数调用" << endl;        this->ID = p.ID;        this->age = p.age;        this->height = p.height;        this->sex = p.sex;}

注意:

但当类中有指针成员时,由系统默认创建该复制构造函数会存在风险,具体原因请查询有关 "浅拷贝"

四、深拷贝和浅拷贝

浅拷贝,指的是在对象复制时,只对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的也是浅拷贝。

例如: person p2 = p1; 这就是浅拷贝,将p1中的成员变量值赋给p2,在这里其实就相当于拷贝构造函数的调用。

但是,浅拷贝,在成员变量是引用类型(指针)时,会出现问题。

  • 传参问题中,地址传递后可以实现swap函数的调用,这就是浅拷贝的原理

  • 当我们使用浅拷贝时,引用类型传递的依旧是地址,这也就是说,拷贝后的对象和拷贝的对象中引用对象指向同一块地址,这样就出现问题了。

在"深拷贝"的情况下,对于对象中动态成员,就不能仅仅简单地赋值了,而应该重新动态分配空间。

如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝。

上面提到,如果没有自定义复制构造函数,则系统会创建默认的复制构造函数,但系统创建的默认复制构造函数只会执行"浅拷贝",即将被拷贝对象的数据成员的值一一赋值给新创建的对象,若该类的数据成员中有指针成员,则会使得新的对象的指针所指向的地址与被拷贝对象的指针所指向的地址相同,delete该指针时则会导致两次重复delete而出错。

读到这里,这篇"C++构造函数的类型,浅拷贝与深拷贝实例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

拷贝 函数 对象 成员 类型 指针 参数 地址 系统 实例 实例分析 C++ 分析 变量 就是 指向 数据 文章 问题 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 云信互联网科技有限公司 深圳恒合互联网络科技有限公司 互联网金融与金融科技 期待互联网科技 互联网 的科技创新 互联网金融科技创新 四川狮子座互联网科技 一五八零互联网科技 互联网科技大会案例 互联网对科技的发展 互联网科技公司实习生 青海科技产业互联网发展 长沙茂晟互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 互联网科技资金流入 从那以后互联网科技有限公司 互联网时代科技型公司的机会 10位科技互联网大佬 科技发展第三阶段互联网时代 互联网科技股 互联网科技与金融科技 互联网公司会议桌创意科技软装饰 受益于互联网科技的高速发展 宁夏科技产业互联网案例 注册互联网科技公司经营范围大全 皮皮虾互联网科技有限公司 产业互联网科技服务公司 互联网科技品牌 武汉亿视互联网科技有限公司
0