[Linux]C++学习笔记(二)

本文深入探讨了C++中的操作符重载和函数重载,包括如何实现操作符重载以适应更广泛的用途,以及函数重载的基本概念。通过实例展示了如何在C++中实现这两种重载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[Linux]C++学习笔记(二)

C++重载(overloading)和其它编程语言中的重载概念基本上是一致的。C++重载分为操作符重载与函数重载。

操作符重载

操作符重载使用关键字operator。

操作符重载能够使同一个操作符具有不同的操作含义,满足更广泛范围的操作需要。

例如,对于一个容器类MyList,你可以重载操作符+号,重载的含义是对两个MyList使用+执行相加,表示将两个MyList的内容合并到一起,等等。

后面学习中单独对操作符重载举例。

函数重载

函数重载都是为了能够共享同一个函数名称,而具有相同的函数名称的函数具有不同类型的参数,这些具有相同函数名称的函数就是通过重载而定义的。

一定要明确,重载的函数或者具有不同类型的形参,或者具有不同个数的形参。

例如,如果同时定义函数int getMax(int &x, int &y)与int getMax(int x, int y),这两个函数是不能够重载的,编译器无法辨认到底调用的是哪一个函数。

举个简单的例子:

#include <iostream>
#include <list>

using namespace std;

typedef list<int> LIST;

int get_max(LIST &list);
int get_max(int &x, int &y);

int main() {
LIST list;
list.push_back(12);
list.push_back(4);
list.push_back(8);
list.push_back(5);
cout<<get_max(list)<<endl;

int x = 120;
int y = 121;
cout<<get_max(x, y)<<endl;

return 0;
}


int get_max(LIST &list) {
int max = 0;
LIST::iterator it;
for(it = list.begin(); it != list.end(); it++) {
   if(max<*it) {
    max = *it;
   }
}
return max;
}

int get_max(int &x, int &y) {
return x<y?y:x;
}

int getMax(int &x, int &y) {
        return x<y?y:x;
}

其中,int getMax(LISTINT &list)和int getMax(int &x, int &y)是重载函数,他们具有相同的函数名称,但是具体有不同的参数个数,而且参数的类型是不同的,编译器可以分辨到底调用的是哪一个函数,因此是合法的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值