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

C++重载 强制类型转换运算符

文章目录

  • 1.函数调用运算符重载
  • 2.强制类型转换运算符重载
    • 2.1对运算符的认识
    • 2.2类型强制转换运算符

1.函数调用运算符重载

class Display
{
public:
	void operator()(string text)
	{
		cout << text << endl;
	}

};
class Add
{
public:
	int operator()(int v1, int v2)
	{
		return v1 + v2;
	}
};

int main() 
{
	Display Print;
	Print("hello world");

	Add add;
	int ret = add(10, 10);
	cout << "ret = " << ret << endl;

	//匿名对象调用  
	cout << "Add()(100,100) = " << Add()(100, 100) << endl;
	return 0;
}

在这里插入图片描述

2.强制类型转换运算符重载

2.1对运算符的认识

C++ 中类型的名字/类的名字本身是一种类型强制转换运算符

2.2类型强制转换运算符

  1. 单目运算符
  2. 可以被重载为成员函数[不能被重载为全局函数]

重载 int 类型强制转换运算符

class Test
{
public:
	Test(int a = 0, int b = 0) 
		:_a(a)
		, _b(b) 
	{

	}
	//重载 强制类型转换运算符时 
	// 返回值类型是确定的 
	// 即运算符本身代表的类型
	// 不需要指定返回值类型
	operator int()
	{ 
		return _a; 
	}
private:
	int _a;
	int _b;
};
int main()
{
	Test obj(10, 20);
	//obj.operator int()
	cout << (int)obj << endl;  //10

	//类A如果对int进行了  强制类型转换运算符重载
	//那么类A的对象参与含int这个类型的表达式时 
	//该类A的对象就会调用operator int() 
	// 即类A的对象一旦出现在含int这个类型的表达式时
	// 这个对象在此处的值就是调用operator int()这个函数的返回值

	int n = 5 + obj;           //int n = 5 + obj.operator int()
	cout << n << endl;         //15
}

http://www.kler.cn/a/106266.html

相关文章:

  • uniapp自动注册机制:easycom
  • 时间序列分析——移动平均法、指数平滑法、逐步回归法、趋势外推法等(基于Python实现)
  • 每日一博 - Java的Shallow Copy和Deep Copy
  • SOP搭建:企业标准化操作程序构建与实施指南
  • ubuntu 安装kafka-eagle
  • 【书生大模型实战营 闯关材料】入门岛:第4关 玩转HF/魔搭/魔乐社区
  • 论文阅读(一)城市干道分段绿波协调控制模型研究
  • endnote设置
  • reactNative导入excel文件
  • 上架用的SDK三方应用隐私
  • xml导出pdf简单实现
  • 软考高级系统架构师冲关预测
  • 【牛牛送书 | 第二期】《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》
  • 易基因: Nature Biotech:番茄细菌性青枯病的噬菌体联合治疗|国人佳作
  • 【Matlab2016】Matlab中文版的下载、安装、激活(不建议安装过高版本!!)
  • 特殊类设计[下] --- 单例模式
  • Spring Boot整合OAuth2实现GitHub第三方登录
  • java开发中,如何在springboot下使用单例模式
  • C语言 sizeof 函数内部进行计算
  • 计算机网络【CN】子网划分与子网掩码
  • 构建客户门户的痛点及低代码工具解决方案
  • c++编译使用log4cplus
  • 系列十四、Spring如何处理线程安全问题
  • 基于STC系列单片机实现定时器扫描数码管显示定时器/计数器产生频率的功能
  • 2023年第四届MathorCup大数据挑战赛(B题)|电商零售商家需求预测及库存优化问题|数学建模完整代码+建模过程全解全析
  • 【Linux】进程优先级|进程并发概念|在vim中批量化注释