C++赋值运算符怎么用
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容主要讲解"C++赋值运算符怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++赋值运算符怎么用"吧!C++当中允许类对象赋值,这是通过默认的
千家信息网最后更新 2025年01月31日C++赋值运算符怎么用
本篇内容主要讲解"C++赋值运算符怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++赋值运算符怎么用"吧!
C++当中允许类对象赋值,这是通过默认的重载赋值运算符实现的,它的原型如下:
Class_name & Class_name::operator=(const Class_name &);
它接受并返回一个指向类对象的引用。
将已有的对象赋给另一个对象时,将会使用重载的赋值运算符:
StringBad headline1("Celery");StringBad knot;knot = headline1; // 调用赋值运算符
如果是对象初始化的过程,则不一定会使用赋值运算符,比如:
StringBad metoo = knot;
像是这种情况很难说,因为metoo
是一个新建的对象,它可以使用拷贝构造函数。然而,也可以分成两步来处理,先使用拷贝构造函数创建一个临时对象,然后在赋值的时候使用赋值运算符复制到新对象中去也是可以的。
和拷贝构造函数类似,默认赋值运算符的实现也是对成员进行逐个复制。如果成员本身就是累对象,那么会使用这个类的赋值运算符来复制。
赋值运算符的问题在哪里呢?我们还是看下之前StringBad
那个例子,
我们看下下面这段代码:
StringBad sb("test");StringBad sports("Spinach Leaves Bowl for Dollars");StringBad knot;knot = sports;
当我们运行的时候就会遇到这样的报错:
报错的原因日志里写得很清楚,我们尝试释放一个没有被分配的内存。
会报错的原因很简单,因为我们执行knot = sports
的时候,两个对象内部的字符串指向的是同一个地址。这就导致了析构knot
的时候sports
对象对应的内容已经不存在了。
解决方案也很简单,就是我们自己重载赋值运算符,保证不会出现简单拷贝的问题。
StringBad & StringBad::operator= (const StringBad & st) { if (this == &st) return *this; delete []str; len = st.len; str = new char[len+1]; std::strcpy(str, st.str); return *this;}
到此,相信大家对"C++赋值运算符怎么用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
运算符
运算
对象
拷贝
时候
C++
内容
函数
原因
就是
成员
指向
问题
学习
实用
更深
清楚
两个
代码
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
windows系统服务器一台
软件开发常用知识
服务器攻防与安全技巧
网络安全与道德读本书
南通云网络技术收费标准
数据库查询出学生的信息排序
数据库分片算法
如何查看电脑的数据库端口
旅游软件开发类图怎么画
厦门软件开发有限公司郑文健
贵州定制化服务器
配电缺陷闭环管理软件开发
工厂追溯软件开发
计算机网络技术基础盛立军答案
杭州戴尔服务器订制
北京曙光服务器维修系统
软件开发电力行业
云帮手服务器名字怎么用
怎么远程登录云服务器
计算机网络技术授课计划
数据库添加数据语句
威胁数据库安全的因素
刀塔传奇 安卓 服务器
网络安全法自起实施行
传感器网络技术在医疗上的应用
网络技术原理图片
数据库安全包括哪几种
求生之路2弑神巅峰服务器群号
2022家用服务器cpu推荐
mac有开源服务器吗