C++赋值运算符怎么用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"C++赋值运算符怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++赋值运算符怎么用"吧!C++当中允许类对象赋值,这是通过默认的
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
proxy服务器的安全凭证
t6数据库 科目表
服务器提示安全连接已经关闭
网络技术基础第二章
逆战无法登陆服务器
关系数据库表连接方式
mc服务器cpu
我的世界1.7.2服务器地址大全
创意说唱 网络安全茶话会
网络安全审计问题
担保软件开发
2016省市区数据库
qt 判断数据库表存不存在
软件开发注册机
如何在数据库更新序号
渤海银行网络安全招标
软件开发及收费标准
雄安 软件开发
cscd引文数据库是什么意思
广东美容软件开发公司简介
江苏极限网络技术股份
网络安全整体态势图
数据库服务如何启动
java连接本地数据库
关系数据库表连接方式
软件开发的动态调整
怎么确认数据库有没有这张表
交通运输运管所网络安全
上海清花网络技术
网络安全产品漏洞扫描