gpt4 book ai didi

c++ - 我应该使用基类还是子类来访问基类中定义的枚举值/常量?

转载 作者:行者123 更新时间:2023-11-28 06:46:47 25 4
gpt4 key购买 nike

假设我们有两个类,BaseChildChild 继承BaseValue 是定义在 Base 中的常量变量(或枚举值),因此可以通过 Base::Value 访问。

现在我们正在处理一些 Child 类型的变量。我注意到在许多文档和示例代码中,人们倾向于使用 Base::Value 而不是 Child::Value 尽管他们正在处理 Child 实例。例如,在Qt库中有QIODeviceQBuffer(后者是前者的 child ),而QBuffer有一个方法打开。文档倾向于使用类似 buffer.open(QIODevice::ReadWrite, ...); 而不是 buffer.open(QBuffer::ReadWrite, ...);。还有很多其他的例子,相信大家都经常看到。

我有点好奇为什么人们倾向于使用基类来访问这些值,因为有时我们不确定在哪些类中定义了值,更重要的是,子类有可能可以覆盖基类中定义的值。那么通过当前类(WhateverClassBeingUsed::Value)访问常量值不是最好的吗?

最佳答案

I'm a bit curious why people tend to use the base classes to access those variables, since sometimes we don't know for sure in which classes is the value defined, and more importantly, it is possible that the child classes may override the values defined in base classes.

当然可以,但这两种情况都是非常糟糕的代码,您希望避免它们。您不能覆盖枚举的值,您只能定义一个巧合命名的枚举。这将是一个完全不同的类型,并且不会编译。

不确定它在哪个类中定义仅对实现细节有用...用户必须知道要使用哪个类,这样他们才能找到并使用它。

使用定义枚举的类并没有真正的损失。

关于c++ - 我应该使用基类还是子类来访问基类中定义的枚举值/常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com