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

【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 ?: . 不能重载

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

相关文章:

  • JS 应用算法逆向三重断点调试调用堆栈BP 插件发包安全结合
  • java中final以及static的作用
  • Linux并发与竞争:从生活例子到内核实战
  • 从对数变换到深度框架:逻辑回归与交叉熵的数学原理及PyTorch实战
  • 高企复审奖补!2025年合肥市高新技术企业重新认定奖励补贴政策及申报条件
  • 【AI论文】ToolRL:奖励是工具学习所需的一切
  • [创业之路-382]:企业法务 - 企业如何通过技术专利与技术秘密保护自己
  • 深度学习:迁移学习
  • rocky9.4部署k8s群集v1.28.2版本(containerd)(纯命令)
  • ssh启动不了报错
  • leetcode刷题日记——有效的括号
  • python自动化学习六:断言
  • 基于Java+MySQL 实现(Web)日程管理系统
  • 开发了一个b站视频音频提取器
  • Spring Security结构总览
  • 【MySQL】基本查询
  • Android 16强制横竖屏设置
  • 【oql】spark thriftserver内存溢出,使用oql查询导致oom的sql
  • c语言 write函数
  • 3、ArkTS语言介绍
  • 中国驻英国大使郑泽光:中国需要世界,世界也需要中国
  • 今年五一,贵州一脸“爆相”
  • 研讨会丨明清区域史研究的比较与对话
  • 不朽诗篇的现代重生,意大利音乐剧《神曲》将来华15城巡演
  • 谁为金子疯狂:有人贷款十万博两千,有人不敢再贸然囤货
  • 教皇方济各逝世,外交部:表示哀悼,愿同梵方共同推动中梵关系持续改善