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
#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();
我们会发现非虚方法是调用基类的,而虚方法是调用子类的(当然实现编写时不会这样操作,这里只是方便你理解没有通过函数方式去写)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯