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

【C++入门:类和对象】[3]

C++入门:类和对象

拷贝构造(拷贝初始化)

拷贝构造是构造函数的重载

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;
}
void Print()
{
cout<<_year<</<<_month<</<<_day<<endl;
}
private:
{
int _year=year;
int _month=month;
int _day=day;
}};
int main()
{
Date d1(2025,4,24);
Date d2(d1);
Date d3=d1;
}

需要自己写拷贝构造的情景

大部分拷贝构造不需要自己写
但是自定义类型需要自己写
不然只能浅拷贝(值拷贝)指向的空间相同(一个对象修改,会影响另外一个)
写拷贝构造可以深拷贝(指向的空间不同,新开辟空间,防止析构或者free两次)
…自定义类型不用写

运算符重载

1.当运算符用于类类型的对象时,要使用运算符重载,不然编译器会报错
2.运算符重载是有特殊名字的函数
3.一元运算符有一个参数,二元运算符有两个参数

bool operator==(Date& d1,Date& d2)//判断日期是否相同
{return d1._year=d2._year&&
d1._month=d2._month&&
d1._day=d2._day;
}
int operator-(Date& d1,Date& d2)
{return 0;
}

.* :: sizeof ?: . 不能重载

运算符重载至少有一个是自定义类型

http://www.xdnf.cn/news/1645.html

相关文章:

  • LJF-Framework 第15章 想想搞点啥-若依管理系统兼容一下
  • 在Windows11上用wsl配置docker register 镜像地址
  • django admin 添加自定义页面
  • 从码云上拉取项目并在idea配置npm时完整步骤
  • netty中的Channel与Java NIO中的Channel核心对比
  • docker 配置代理
  • 3、ArkTS语言介绍
  • 数据完整性的守护者:哈希算法原理与实现探析
  • Redis的过期删除策略和内存淘汰策略
  • Django创建的应用目录详细解释以及如何操作数据库自动创建表
  • R/G-B/G色温坐标系下对横纵坐标取对数的优势
  • Java中的阻塞队列有界和无界区别
  • Langchain检索YouTube字幕
  • Axure复选框组件的深度定制:实现自定义大小、颜色与全选功能
  • react-09React生命周期
  • 解析塔能科技:绿色低碳智慧节能一站式破局之匙
  • 极狐GitLab 如何从 CSV 导入议题?
  • 实时步数统计系统 kafka + spark +redis
  • 4.1 融合架构设计:LLM与Agent的协同工作模型
  • 遨游三防|30200mAh、双露营灯三防平板,见证堆料天花板
  • 多语言笔记系列:使用用户输入
  • Python爬虫爬取图片并存储到MongoDB(注意:仅尝试存储一条空的示例数据到MongoDB,验证MongoDB的联通性)
  • 220V转18V600mA非隔离芯片WT5110
  • 【防火墙 pfsense】1简介
  • Freerots----任务通知
  • Qt本地化 - installTranslator不生效
  • Atlas 800I A2 离线部署 DeepSeek-R1-Distill-Llama-70B
  • 2025年土建施工员考试题库及答案
  • Control Center安卓版:自定义控制中心,提升手机操作体验
  • PostgreSQL 分区表——范围分区SQL实践