在C++中,没有内置的super关键字或机制来直接调用父类的方法
class Base {
public:
void foo() {
// ...
}
};
class Derived : public Base {
public:
void bar() {
Base::foo(); // 使用作用域解析运算符调用父类的foo()方法
}
};
std::base_class
模板:#include <type_traits>
class Base {
public:
void foo() {
// ...
}
};
class Derived : public Base {
public:
void bar() {
std::base_class<Base>::foo(); // 使用std::base_class模板调用父类的foo()方法
}
};
std::invoke
函数模板:#include <type_traits>
#include <functional>
class Base {
public:
void foo() {
// ...
}
};
class Derived : public Base {
public:
void bar() {
std::invoke(&Base::foo, static_cast<const Base*>(this)); // 使用std::invoke调用父类的foo()方法
}
};
这些方法都可以实现类似super调用的功能,即在派生类中调用父类的成员函数。你可以根据自己的需求和编程风格选择合适的方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。