在面向对象编程中,虚函数是多态行为的基石。但是当我们在虚函数中引入默认参数并派生新类时会发生什么?派生类是否继承这些默认值?
默认参数和继承
与流行的看法相反,虚函数确实支持默认参数。但是,这些参数不会传播到派生类。每个派生类都维护自己的一组默认参数,独立于基类。
确定应用哪些默认值
在虚拟函数调用期间应用的默认参数是由被调用对象的静态类型决定。这意味着:
编译器行为和推荐实践
虽然 C 标准规定了上述行为,但某些编译器可能会以不同的方式实现这一点。但是,通常建议:
示例程序
要演示此行为,请考虑以下程序:
struct Base { virtual string Speak(int n = 42); }; struct Der : public Base { string Speak(int n = 84); };
在此示例中:
输出这个程序清楚地说明了使用的默认参数是由对象的静态类型决定的
结论
具有默认参数的虚拟函数在 C 中提供了灵活性,但理解它们的继承动态至关重要。通过遵循推荐的实践,您可以确保应用程序中的可预测且可维护的多态行为。
以上是默认参数在继承的虚函数中如何表现?的详细内容。更多信息请关注PHP中文网其他相关文章!