永发信息网

C++中,子类对基类的某一个方法进行了重写,

答案:2  悬赏:50  手机版
解决时间 2021-01-28 00:12
  • 提问者网友:遁入空寂
  • 2021-01-27 02:24
C++中,子类对基类的某一个方法进行了重写,请问:在子类对象中还有没有基类的那个方法?是不是被屏蔽起来,但是还是存在于子类对象的中?
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-01-27 03:31
子类中还有,不过被屏蔽了。得用DerivedClass.BaseClass::function();的形式来调用。
#include 

using namespace std;

class Base{
    public:
    void test(){
        cout << "Base" << endl;
    }
};

class Derived : public Base{
    public:
    void test(){
        cout << "Derived" << endl;
    }
};

int main(){
    Derived d;
    d.test();
    d.Base::test();
    return 0;
}

//Output
Derived
Base
全部回答
  • 1楼网友:末日狂欢
  • 2021-01-27 04:21

我想你之所以这样问是没有真正的理解虚函数的作用。

下面我们一起做个试验

写一个基类 pen 它有两个方法void wirte() 和virtual void draw()

再一个子类 pencil 重写基类的两个方法

class pen

{

void wirte()

{cout<<"pen wirte"<<endl;}

virtual void draw()

{cout<<"pen draw"<<endl;}

};

class pencil

{

void wirte()

{cout<<"pencil wirte"<<endl;}

virtual void draw()

{cout<<"pencil draw"<<endl;}

};

然后在main函数中我们把子类对象付给一个基类的指针 再调用这两个方法

pencil pencil;  pen* pen=&pencil;  pen->wirte();  pen->draw();

我们会发现非虚方法是调用基类的,而虚方法是调用子类的(当然实现编写时不会这样操作,这里只是方便你理解没有通过函数方式去写)

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯