重载分为两种,重载运算符和重载函数。
运算符重载的格式、含义
重载运算符可以为我们提供极大的便利。因为运算符本身是一个拥有特殊名称的函数,运算符重载也是通过函数实现的,所以重载运算符本质上还是函数重载。
返回值类型 operator 运算符名称 (形参表列){
//TODO:balabala
}
operator是关键字,是专门用于定义重载运算符的函数。
我们经常会看到形参列表的括号后面还有个const,在类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。
所以设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。
以下是不可重载的运算符列表:
- 成员访问运算符 :
- 成员指针访问运算符 * 和 ->*
- 域运算符 ::
- 长度运算符 sizeof
- 条件运算符 ? :
- 预处理符号 #
函数重载的格式、含义
在同一个作用域内,可以声明多个同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。不能仅通过返回类型的不同来重载函数。
#include <iostream>
using namespace std;
class printData
{
public:
void print(int i) {
cout << "整数为: " << i << endl;
}
void print(double f) {
cout << "浮点数为: " << f << endl;
}
void print(char c[]) {
cout << "字符串为: " << c << endl;
}
};
int main(void)
{
printData pd;
char c[] = "Hello C++";
pd.print(5); // 输出整数
pd.print(500.263); // 输出浮点数
pd.print(c); // 输出字符串
return 0;
}
这里的成员函数重名了,但是参数类型不一样,所以是OK的。
参考来源
博客
https://blog.csdn.net/whyglinux/article/details/602329
C++ 菜鸟教程
https://www.runoob.com/cplusplus/cpp-overloading.html