您好,登錄后才能下訂單哦!
在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。