c++第五次作业

重载与多态

重载

C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形参(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

重载格式,举例:

void show()
{
    cout<<"c++"<<endl;
}

void show(int a)
{
    cout<<"the anwser is"<<a<<endl;
}

如以上对于传递参数的不同会自动调用适合的函数来使用。返回值也能够用来区分重载函数,但是不能只有返回值的类型不同。

运算符重载

重定义或重载大部分 C++ 内置的运算符,以此来使用自定义类型的运算符。

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

格式举例:

返回值类型 operator运算符(形参)

如下所示代码:

#include <iostream>
using namespace std;

class point
{
private:
    int x;
    int y;
public:
    point(int a = 1, int b = 1)
    {
        x = a;
        y = b;
    }
    point operator++()
    {
        this->x++;
        this->y++;
    }
    point operator++(int)
    {
        point c;
        c.x = this->x++;
        c.y = this->y++;
        return c;
    }
    point operator--()
    {
        this->x--;
        this->y--;
    }
    point operator--(int)
    {
        point c;
        c.x = this->x--;
        c.y = this->y--;
        return c;
    }
    void show()
    {
        cout << x << " " << y<<endl;
    }
};
int main()
{
    point a(2,2), b, c;
    c = a++;
    a.show();
    c.show();
}

其中对于后置的运算符必须在定义时在形参中加入int,但此时int不会定义任何变量所以不算是作为参数。

多态

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

通过virtual来定义虚函数

代码示例

class point
{
private:
    int x;
    int y;
public:
    virtual void show()
    {
         cout<<"c++"<<endl;
    }
}

如果show函数中无内容则称该函数为纯虚函数,其函数体有其继承类定义。而具有纯虚函数的类被称为抽象类,其中抽象类无法实例化即形如point a的定义是错误的。

posted on 2019-10-27 18:16  zero-one  阅读(159)  评论(0编辑  收藏  举报

导航