c++ |
您所在的位置:网站首页 › 纯虚函数有参数吗 › c++ |
我提交了一些代码: 抽象类: virtual void someFunction(std::vector & iObject) = 0; virtual void someFunction(std::vector & iObject, bool aSwitch) = 0;第一个函数已经存在,我添加了第二个函数以避免纯方法中存在默认值参数。 派生类中的 header : virtual void someFunction(std::vector & iObject); virtual void someFunction(std::vector & iObject, bool aSwitch = false);按预期使用: someFunction(std::vector & Object);或 someFunction(std::vector & Object, true);someFunction 因为它是 - 已经存在,我添加了开关。 它运作良好,但我很困惑。 我有一位代码审阅者说我应该在纯虚函数中包含一个默认值以避免两个函数签名。我记得读过纯虚拟中的默认值不是一个好主意,但我无法争论一个有效的观点,而且文章似乎并不清楚为什么。 如果我添加默认值会导致歧义吗?如果是这样,我在派生的虚拟方法中仍然需要默认值吗? 我可以在纯虚函数中添加默认值并删除派生类 header 中的第一个函数吗?这里的最佳实践是什么? 最佳答案 一般默认参数函数的默认参数并不绑定(bind)到函数本身,而是绑定(bind)到调用上下文:将使用在调用范围内为函数声明的默认值(请参阅 C++ 标准,[dcl.fct.default])。对于 example : void f(int a=1); // forward declaration with a default value for the compilation unit void f(int a) // definition { cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |