c++学习记录(七)

南楼画角 提交于 2020-02-08 00:15:41

c++学习实践之重载

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

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

重载函数

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

#include<iostream>
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)结果

重载运算符

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

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

#include<iostream>
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++变得更加灵活,后续还有很多的重载运算符。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!