在 C++ 中,我们可以使用以下两种方法来实现 super 调用:
在基类中声明一个虚函数,然后在派生类中重写这个函数。通过基类指针或引用调用该虚函数时,会自动调用派生类中的实现。这样,我们可以在派生类中实现类似于 super 调用的功能。
#include <iostream>
class Base {
public:
virtual void super() {
std::cout << "Base class super function called" << std::endl;
}
};
class Derived : public Base {
public:
void super() override {
std::cout << "Derived class super function called" << std::endl;
}
};
int main() {
Base *b = new Derived();
b->super(); // 输出:Derived class super function called
delete b;
return 0;
}
using
声明在派生类中,可以使用 using
声明来引入基类中的某个成员函数,这样就可以在派生类中直接调用这个函数,类似于 super 调用。
#include <iostream>
class Base {
public:
void super() {
std::cout << "Base class super function called" << std::endl;
}
};
class Derived : public Base {
public:
using Base::super; // 引入基类的 super 函数
};
int main() {
Derived d;
d.super(); // 输出:Base class super function called
return 0;
}
需要注意的是,使用 using
声明引入基类成员函数时,派生类中的同名函数会被隐藏,而不是覆盖。因此,如果需要在派生类中调用基类的成员函数,可以直接通过基类名进行调用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。