重载与多态ios
重载c++
C++容许在同一范围中声明几个功能相似的同名函数,可是这些同名函数的形参(指参数的个数、类型或者顺序)必须不一样,也就是说用同一个函数完成不一样的功能。这就是重载函数。重载函数经常使用来实现功能相似而所处理的数据类型不一样的问题。不能只有函数返回值类型不一样。函数
重载格式,举例:this
void show() { cout<<"c++"<<endl; } void show(int a) { cout<<"the anwser is"<<a<<endl; }
如以上对于传递参数的不一样会自动调用适合的函数来使用。返回值也可以用来区分重载函数,可是不能只有返回值的类型不一样。spa
运算符重载code
重定义或重载大部分 C++ 内置的运算符,以此来使用自定义类型的运算符。对象
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其余函数同样,重载运算符有一个返回类型和一个参数列表。blog
格式举例:继承
返回值类型 operator运算符(形参)
io
以下所示代码:
#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的定义是错误的。