C++中的重载、隐藏和重写

来源:互联网 发布:智能家居服务器源码 编辑:程序博客网 时间:2024/05/21 13:58

本博参考了:http://m.jb51.net/article/54225.htm

1、重载(overload)

同一个类里面,函数名和返回值类型相同,函数的参数类型或参数的个数不同。

class A{public:    void test(int i);    void test(double i);    void test(int i,double i);    int test(int i)//错误,不构成重载};

2、隐藏

只要派生类的函数和基类的函数重名,不管参数列表是否相同,基类函数都会被隐藏。

class A{public:    void test(int i ,int j);};class B : public A{public:    //隐藏    void test(double i);};int main(){    B b;    b.test(0.5);//调用B的函数    b.test(2,3);//调用错误,因为A的test函数被隐藏}

3、重写(override)

- -a、基类的函数有virtue关键字修饰- -b、派生类的函数与基类被重写的函数“函数名”、“参数列表”、“返回值类型”必须完全一致。只有函数体不同。
class A{public:    virtual void test(int i ,int j);};class B : public A{public:    //重写,此处virtual可不写,建议写上    virtual void test(int i ,int j);};int main(){    A a;    B b;    A * pa=&a;    pa->test(3,4);//调用A的test函数    pa=&b;    pa->test(3,4);//调用B的test函数}
0 0
原创粉丝点击