当前位置: 首页 > news >正文

C++[类和对象][3]

C++[类和对象][3]

赋值运算符的重载(operator=)

1.是一个默认成员函数,重载必须为成员函数,用于两个已经存在的对象,(d1=d3赋值重载)(Stack d4=d1拷贝构造(因为d4未存在,初始化))
2.建议写成引用返回提高效率,可以连续赋值重载
3.没有写的时候会自动生成,完成值拷贝/浅拷贝对(对于自定义类型)(一个修改会修改另一个)
4.栈实现赋值重载,要先销毁空间,创建一个一样的空间,再拷贝

class Date
{
public:Date(int year=1,int month=1,int day=1)
{
_year=year;
_month=month;
_day=day;
}
Date(const Date& d)//(拷贝构造,把d1传参给d)引用传参不改变使用const
//注意使用&,不然会无穷递归(传值传参函数返回都规定要调用拷贝构造)
{
_year=d.year;
_month=d.month;
_day=d.day;
}
Date& operator=(const Date& d)//
{
if(this!=&d)
{
_year=d.year;
_month=d.month;
_day=d.day;
}return *this;//(添加this指针的引用返回可以连续赋值)
}void Print()
{
cout<<_year<</<<_month<</<<_day<<endl;
}
private:
{
int _year=year;
int _month=month;
int _day=day;
}
class Stack
{
public:
Stack& operator=(const Stack& st)
{//先判断
if(this!=&st)
{free(a);
a=(int*)malloc(sizeof(int)*st.capcity);
if(a==nullptr)
{
perror("malloc fail!");
return;
}
memcpy(a,st.a,sizeof(int)*st.top);
top=st.top;
capcity=st.capcity;
}
return *this;//栈的赋值重载
}
private:
int top;
int capcity;
}};
int main()
{
Date d1(2025,4,24);
Date d2(d1);
Date d3;
d3=d1=d2;//赋值重载
Stack st1;
Stack st2;
st1=st2;
}

相关文章:

  • git 命令集
  • 设计模式-- 原型模式详解
  • mybatis-plus里的com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析
  • 【Linux网络】:套接字之UDP
  • 《免费开放”双刃剑:字节跳动Coze如何撬动AI生态霸权与暗涌危机?》
  • 交叉编译paho.mqtt.c和paho.mqtt.cpp(MQTT客户端)
  • 制作一款打飞机游戏25:添加数据
  • 芯岭技术XL32F003单片机 32位Cortex M0+ MCU简单介绍 性能优异
  • 【Harmony_Bug】forEach + asyncawait 的异步陷阱
  • node.js 实战——从0开始做一个餐厅预订(express+node+ejs+bootstrap)
  • git 的基本使用
  • RTMP 入门指南
  • 【语法】C++的stack和queue
  • 零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion
  • Langchain入门介绍
  • Spring @Transactional 自调用问题深度解析
  • C语言----函数栈帧讲解
  • 抖音IP属地跟无线网有关系吗?一文解析
  • 【智慧城市】新中地GIS开发实训:基于 Vue 框架的武汉智慧旅游系统
  • http协议详解附带c/c++服务器和客户端源码
  • 13家券商一季报出炉:超七成业绩预喜,财通、湘财、第一创业下滑
  • 闲暇时间的“堕落”
  • 湖南娄底市长曾超群,已任娄底市委书记
  • 迎接神十九乘组回家,东风着陆场各项工作已准备就绪
  • 《卿本著者》译后记等内容被指表述不当,江苏人民出版社:即日下架
  • 杭州发布最新“独角兽企业”榜单,“六小龙”中5家已晋级