C++ 重写与重载

来源:互联网 发布:淘宝运营新手好学吗 编辑:程序博客网 时间:2024/05/22 16:48

函数重载
必须在同一个类中进行
子类无法重载父类的函数,父类同名函数将被名称覆盖
重载是在编译期间根据参数类型和个数决定函数调用

函数重写
必须发生于父类与子类之间
并且父类与子类中的函数必须有完全相同的原型
使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义)

#include <cstdlib>#include <iostream>using namespace std;class Parent01{public:    Parent01()    {        cout<<"Parent01:printf()..do"<<endl;     }public:    virtual void func()    {        cout<<"Parent01:void func()"<<endl;    }    virtual void func(int i)    {        cout<<"Parent:void func(int i)"<<endl;    }    virtual void func(int i, int j)    {        cout<<"Parent:void func(int i, int j)"<<endl;    }};class Child01 : public Parent01{public:    //此处2个参数,和子类func函数是什么关系    void func(int i, int j)    {        cout<<"Child:void func(int i, int j)"<<" "<<i + j<<endl;    }    //此处3个参数的,和子类func函数是什么关系    void func(int i, int j, int k)    {        cout<<"Child:void func(int i, int j, int k)"<<" "<<i + j + k<<endl;    }};void run01(Parent01* p){    p->func(1, 2);}int main(){    Parent01 p;    p.func();    p.func(1);    p.func(1, 2);    Child01 c;    //c.func(); //问题1    c.Parent01::func();    c.func(1, 2);    run01(&p);    run01(&c);    system("pause");    return 0;}
原创粉丝点击