当谈到C++中的重载时,我们通常指的是运算符重载和函数重载。
1. 运算符重载(Operator Overloading):
在C++中,你可以重载许多运算符,如+、-、*、/ 等,以便使它们适用于自定义类的对象。通过运算符重载,你可以定义类对象之间的操作,使其更符合你的需求。
示例:
#include <iostream>
class Complex {
private:
double real;
double imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 重载加法运算符
Complex operator+(const Complex& c) {
Complex temp;
temp.real = real + c.real;
temp.imag = imag + c.imag;
return temp;
}
void display() {
std::cout << real << " + " << imag << "i" << std::endl;
}
};
int main() {
Complex c1(2, 3);
Complex c2(4, 5);
Complex sum = c1 + c2; // 使用重载的+运算符
sum.display();
return 0;
}
在上面的示例中,我们重载了加法运算符+
,使得两个Complex
类的对象可以通过+
进行相加操作。
2. 函数重载(Function Overloading):
函数重载是指在同一个作用域内,可以定义多个同名函数,但它们的参数列表不同(参数类型、个数或顺序)。编译器会根据调用时提供的参数类型和数量来确定调用哪个函数。
示例:
#include <iostream>
void print(int num) {
std::cout << "Integer: " << num << std::endl;
}
void print(double num) {
std::cout << "Double: " << num << std::endl;
}
int main() {
print(5); // 调用第一个print函数
print(3.14); // 调用第二个print函数
return 0;
}
在上面的示例中,我们定义了两个重载的print
函数,一个接受整数参数,另一个接受双精度浮点数参数。编译器会根据传入的参数类型来调用适当的函数。