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

C++ 快速回顾(三)

C++ 快速回顾(三)

  • 前言
  • 一、重载左移操作符
  • 二、重载等号运算符的深拷贝
  • 三、其它运算符重载
    • 可以重载的运算符
    • 不可重载的运算符


前言

用于快速回顾之前遗漏或者补充C++知识

一、重载左移操作符

让我们来实现一下类似如下的打印输出

std::cout << "Hello World!\n";

本质就是重载了 “<<” 左移操作符

namespace Test
{class MyStream{public:MyStream& operator<<(const char* p){printf(p);return *this;}void operator<<(const MyStream& Stream){printf("\r\n");}MyStream& operator<<(const int Value){printf("%d", Value);return *this;}};MyStream printCout;MyStream printEnd;
}int main()
{Test::printCout << "Hello" << " " << "C++" << Test::printEnd;Test::printCout << "Test" << " " << 100 << Test::printEnd;system("pause");return 0;
}

二、重载等号运算符的深拷贝

结合我们之前的拷贝构造知识,对赋值等号进行重载

class MyClass
{public:MyClass(int A,const char* Value){this->a = A;this->Ptr = (char*)malloc(1024);memset(this->Ptr, 0, 1024);strcpy(Ptr, Value);}~MyClass(){if (this->Ptr){free(this->Ptr);this->Ptr = nullptr;}}MyClass& operator=(const MyClass& Value){printf("operator=\r\n");this->a = Value.a;this->Ptr = (char*)malloc(1024);memset(this->Ptr, 0, 1024);strcpy(Ptr, Value.Ptr);return *this;}void Print() {if (this->Ptr){printf(this->Ptr);printf("\r\n");}}int a = 0;char* Ptr;
};int main()
{{MyClass A(100, "Hello World");A.Print();MyClass B(200,"eeeee");B = A;B.Print();}system("pause");return 0;
}

注意:B = A;这样是调用重载赋值运算符,而MyClass B = A; 这样是调用拷贝构造!!
注意:B = A;这样是调用重载赋值运算符,而MyClass B = A; 这样是调用拷贝构造!!
注意:B = A;这样是调用重载赋值运算符,而MyClass B = A; 这样是调用拷贝构造!!

三、其它运算符重载

可以重载的运算符

在这里插入图片描述

不可重载的运算符

在这里插入图片描述

http://www.lryc.cn/news/576203.html

相关文章:

  • PICkit3编程器MCLR引脚全解析
  • vue-27(实践练习:将现有组件重构为使用组合式 API)
  • <script setup> 语法糖
  • Netty入门案例:简单Echo服务器(同步)
  • 预训练语言模型
  • 关于USB模式的一些内容(附USB接口颜色释义图)
  • Veo 3 视频生成大模型完整操作教程(2025)
  • Ai大模型 - ocr图像识别形成结构化数据(pp-ocr+nlp结合) 以及训练微调实现方案(初稿)
  • 82、高级特性-配置加载优先级
  • debain切换 opensuse 我都安装了什么
  • 【数据挖掘】数据采集和预处理
  • Milvus报错,reson=timestamp lag too large
  • [Python]-基础篇1- 从零开始的Python入门指南
  • C++11 <chrono> 库特性:从入门到精通
  • SpringMVC系列(四)(请求处理的十个实验(下))
  • 【请关注】制造企业机械加工数据脱敏解决方案
  • 【数据分析,相关性分析】Matlab代码#数学建模#创新算法
  • 目标跟踪存在问题以及解决方案
  • Linux信号机制:从入门到精通
  • Windows VMWare Centos环境下安装Docker并配置MySql
  • 香港 8C 站群服务器买来可以做哪些业务?
  • opi是opensuse独占的吗?
  • 工厂“智能指挥家”上线,富唯智能调度系统让机器人高效协作
  • 关于SAP产品名称变更通知 SAP云认证实施商工博科技
  • 导出docker-compse.yml中docker镜像成tar文件
  • 基于fpga的串口控制的音乐播放器
  • 从0开始学习计算机视觉--Day04--损失函数
  • 微信小程序:实现树形结构组件
  • 【MySQL进阶】服务器配置与管理——系统变量,选项,状态变量
  • 将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式