C++赋值运算符怎么用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"C++赋值运算符怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++赋值运算符怎么用"吧!C++当中允许类对象赋值,这是通过默认的
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技有限公司
广东猪兼强互联网科技有限公司
河南云网互联网络科技有限公司
科技互联网政务服务
互联网是不是新科技
新华互联网科技学院
互联网科技与金融科技
北京互联网科技公司
奇酷互联网科技
艾特科技互联网
朗涯互联网科技
广州善班互联网科技
丰台科技园 互联网公司
海南科技产业互联网平台
湖南洣水互联网科技有限公司扣款
剑昆互联网络科技有限公司临桂
富国互联网金融科技混合基金
兰石爱特工业互联网科技分公司
马化腾互联网科技教学
株洲百竞科技的互联网营销顾问
上海睿民互联网科技有限公司
中国互联网科技股
互联网科技垄断
互联网科技卖菜
碳银互联网科技
金融科技和互联网金融
苏州铭阳互联网科技有限公司
四川慕妮娅互联网科技有限公司
华中科技大学互联网的牛人
马化腾互联网科技教学