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

文章目录

1.函数调用运算符重载

c++ 复制代码
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 类型强制转换运算符

c 复制代码
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
}
相关推荐
初恋叫萱萱6 分钟前
构建高性能生成式AI应用:基于Rust Axum与蓝耘DeepSeek-V3.2大模型服务的全栈开发实战
开发语言·人工智能·rust
cyforkk1 小时前
12、Java 基础硬核复习:集合框架(数据容器)的核心逻辑与面试考点
java·开发语言·面试
仙俊红1 小时前
LeetCode487周赛T2,删除子数组后的最终元素
数据结构·算法
我材不敲代码5 小时前
Python实现打包贪吃蛇游戏
开发语言·python·游戏
身如柳絮随风扬6 小时前
Java中的CAS机制详解
java·开发语言
-dzk-7 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
韩立学长7 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
风筝在晴天搁浅7 小时前
hot100 78.子集
java·算法
Jasmine_llq7 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪8 小时前
快速进制转换
笔记·算法