C++调用父类同名函数方法
作者:NorthPath
时间:2025-10-04
浏览:0
使用作用域解析符可调用被重写的父类函数,如Base::func();当子类隐藏父类同名函数时,需用using引入父类重载;虚函数中可通过父类名调用实现扩展。
使用作用域解析符可调用被重写的父类函数,如Base::func();当子类隐藏父类同名函数时,需用using引入父类重载;虚函数中可通过父类名调用实现扩展。

在C++中,当子类重写了父类的同名函数时,如果想在子类中调用父类的该函数,可以通过作用域解析运算符 :: 显式指定调用父类版本。这是最常见且安全的方式。
使用作用域解析符调用父类函数
当子类覆盖了父类的成员函数,仍然可以在子类内部通过 Base::func() 的形式调用父类的实现。
示例代码:
#includeusing namespace std; class Parent { public: void show() { cout << "Parent's show()" << endl; } }; class Child : public Parent { public: void show() { Parent::show(); // 调用父类的 show() cout << "Child's show()" << endl; } }; int main() { Child c; c.show(); // 输出:Parent's show() 和 Child's show() return 0; }
处理继承中的同名隐藏问题
如果父类和子类有同名函数,即使参数不同,子类函数也会**隐藏**父类的所有同名函数(不是重载)。此时不能直接调用父类的其他重载版本。
解决方法是在子类中使用 using 声明 引入父类的函数重载集。
示例:
class Parent {
public:
void func(int x) {
cout << "Parent::func(int): " << x << endl;
}
};
class Child : public Parent {
public:
using Parent::func; // 引入父类所有 func 重载
void func(double x) {
cout << "Child::func(double): " << x << endl;
}
};
int main() {
Child c;
c.func(5); // 可以调用 Parent::func(int)
c.func(3.14); // 调用 Child::func(double)
return 0;
}
虚函数与多态中的调用技巧
对于虚函数,若在子类中需要扩展父类行为,通常做法是先调用父类函数,再添加子类逻辑。
示例:
class Shape {
public:
virtual void draw() {
cout << "Drawing basic shape" << endl;
}
virtual ~Shape() = default;
};
class Circle : public Shape {
public:
void draw() override {
Shape::draw(); // 先执行父类逻辑
cout << "Drawing a circle" << endl;
}
};
这种方式常用于构造初始化、资源清理或日志记录等场景,确保基类逻辑不被遗漏。
基本上就这些。掌握 :: 调用和 using 声明,就能灵活处理C++中父类同名函数的调用问题。不复杂但容易忽略细节。
作者最新文章
贵州省住建厅与贝壳集团签署旅居战略合作:五大维度落地方案解析
2026-09-08 18:13
上海链家安住APP:业主主动卖房功能与成交数据解析
2026-09-08 18:11
如何批量将PPT转成PDF格式?PPT转PDF工具怎么选?
2026-09-04 16:03
PDF文件怎么压缩?3个小技巧帮你减小体积
2026-09-03 18:03
小批量试产总结报告:新产品量产导入评审实战指南
2026-09-02 19:48
上一篇:
校园淘书宝:线上书店开设教程
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































