首页 > 后端开发 > C++ > 派生类是否继承虚函数中的默认参数?

派生类是否继承虚函数中的默认参数?

Mary-Kate Olsen
发布: 2024-11-23 09:58:09
原创
326 人浏览过

Do Derived Classes Inherit Default Parameters in Virtual Functions?

带默认参数的虚函数

虚函数通常用于面向对象编程中的多态性。它们可以有默认参数值,这就出现了派生类是否继承这些默认值还是指定自己的默认值的问题。

派生类继承默认值吗?

根据C 标准,派生类不会从基类继承虚函数的默认值。

其中使用默认值?

虚函数调用中使用的默认值取决于被调用对象的静态类型。如果通过基类对象或引用调用虚函数,则将使用基类的默认值。但是,如果您通过派生类对象或引用进行调用,则将使用派生类的默认值。

编译器行为和建议实践

不同的编译器可能处理虚函数默认值的方式不同。但是,C 标准规定默认值不可继承,应在派生类中显式指定。

示例

考虑以下示例:

struct Base {
  virtual void f(int a = 7);
};
struct Derived : public Base {
  void f(int a);
};
登录后复制

在这个例子中,Derived 类中的 f 函数没有从基类继承默认值 7。通过派生类对象调用 f 时,调用应显式指定参数,如下所示:

Derived d;
d.f(10); // Call `Derived::f(int a)` with a = 10
登录后复制

结论

虽然虚函数可以有默认参数,这些默认值不会被派生类继承。使用的默认值取决于被调用对象的静态类型。遵循 C 标准建议并在派生类中显式指定默认值被认为是最佳实践。

以上是派生类是否继承虚函数中的默认参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板