在面向对象编程中,如果你想在派生类(子类)中调用父类(基类或超类)的公共接口函数,通常有以下几种方法:
-
直接调用:
如果派生类没有重写父类的公共方法,你可以直接通过派生类的对象调用这个方法。class Base { public: void publicMethod() { // ... } }; class Derived : public Base { // ... }; Derived d; d.publicMethod(); // 直接调用父类的公共方法
-
使用作用域解析运算符:
如果派生类重写了父类的方法,但你想要调用父类的方法,可以使用作用域解析运算符::
。class Base { public: void publicMethod() { cout << "Base method" << endl; } }; class Derived : public Base { public: void publicMethod() { Base::publicMethod(); // 调用父类的方法 cout << "Derived method" << endl; } }; Derived d; d.publicMethod(); // 会先调用Base::publicMethod(),然后调用Derived的publicMethod()的其余部分
-
使用父类指针或引用:
通过父类的指针或引用调用父类的公共方法。Base* basePtr = &d; basePtr->publicMethod(); // 通过父类指针调用 Base& baseRef = d; baseRef.publicMethod(); // 通过父类引用调用
-
在构造函数中调用:
在派生类的构造函数中调用父类的构造函数,从而间接调用父类的公共方法。class Base { public: Base() { publicMethod(); // 假设publicMethod()在构造函数中被调用 } void publicMethod() { // ... } }; class Derived : public Base { // Derived类的构造函数将调用Base类的构造函数 }; Derived d; // 在创建Derived对象时,Base的构造函数会被调用
-
使用虚函数和override:
如果你想要确保即使在多态的情况下也能调用到正确的父类方法,可以使用虚函数和override
关键字。class Base { public: virtual void publicMethod() { // ... } }; class Derived : public Base { public: void publicMethod() override { Base::publicMethod(); // 调用父类的publicMethod // ... } };
使用哪种方法取决于你的具体需求和设计。在实际编程中,你应该根据情况选择最合适的方法来调用父类的公共方法。
分享一个有趣的 学习链接