c++学习记录(七)

c++学习实践之重载

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同

c++类中有重载运算符和重载函数

重载函数

声明多个相似但形式参数个数或者类型不同的函数,编译器通过把你所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。
(1)例子

#include
using namespace std;
class Num
{
public:
    void print(int a)
    {
        cout << "返回整数:" << a << endl;
    }
    void print(double a)
    {
        cout << "返回浮点数:" << a << endl;
    }
};
int main()
{
    Num num;
    num.print(1);
    num.print(1.11111);
}

(2)分析
Num类中有两个函数名相同但形参类型不同的函数,调用相同函数,输入不同类型数据,编译器会自动选取合适的函数输出结果
(3)结果
c++学习记录(七)_第1张图片

重载运算符

重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。大多数的运算符可以重载,以下运算符不可重载。

.成员访问运算符
., ->成员指针访问运算符
::域运算符
sizeof长度运算符
?:条件运算符
# 预处理符号
(1)例子

#include
using namespace std;
class Num
{
private:
    int a;
    int b;
    int c;

public:
    void set1(int z)
    {
        a = z;
    }
    void set2(int x)
    {
        b = x;
    }
    void set3(int v)
    {
        c = v;
    }
    void sum()
    {
        cout << "三数积得:" << a * b * c << endl;
    }
    Num operator+(const Num& num2)
    {
        Num num1;
        num1.a = this->a + num2.a;
        num1.b = this->b + num2.b;
        num1.c = this->c + num2.c;
        return num1;
    }
};
int main()
{
    Num num3, num4,num5;
    num3.set1(1);
    num3.set2(2);
    num3.set3(3);

    num4.set1(1);
    num4.set2(2);
    num4.set3(3);

    num3.sum();
    num4.sum();
    num5 = num3 + num4;
    num5.sum();
}

(2)分析
设置重载加法运算符,将两个子类相加,执行操作后,返回一个相加后的子类。
(3)结果
c++学习记录(七)_第2张图片

总结:重载将c++变得更加灵活,后续还有很多的重载运算符。

你可能感兴趣的:(c++学习记录(七))