定义基类base,有两个公有成员函数fn1(),frn2(),私有派生出derived类,
答案:2 悬赏:0 手机版
解决时间 2021-03-23 10:47
- 提问者网友:戎马万世
- 2021-03-22 14:37
定义基类base,有两个公有成员函数fn1(),frn2(),私有派生出derived类,
最佳答案
- 五星知识达人网友:荒野風
- 2021-03-22 16:14
fn1如果是非虚函数,则可以通过下面方式
derived *p = new derived;
void (base::*pfn1)();
pfn1 = &base::fn1;
(*p.*pfn1)();调用基类的fn1。如果fn1是虚函数,则派生类中的虚函数列表中没有指向基类的fn1这个函数,只有派生类中被override的fn1。所以没有办法调用基类的虚函数。如果是在derived的类成员函数,则可以调用基类的虚函数(注意,不要是纯虚函数)。
void derived::fn3()
{
base::fn1();
}
derived *p = new derived;
void (base::*pfn1)();
pfn1 = &base::fn1;
(*p.*pfn1)();调用基类的fn1。如果fn1是虚函数,则派生类中的虚函数列表中没有指向基类的fn1这个函数,只有派生类中被override的fn1。所以没有办法调用基类的虚函数。如果是在derived的类成员函数,则可以调用基类的虚函数(注意,不要是纯虚函数)。
void derived::fn3()
{
base::fn1();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯