【发布时间】:2011-05-18 23:18:59
【问题描述】:
假设我有一个纯虚拟类,我可以在 C++ 中做这样的事情吗:
class ITreatable
{
public:
bool hasBeenTreated; // <- Can this be here?
virtual bool Treat() = 0;
};
如果没有,我如何确保继承ITreatable 的类有一个名为hasBeenTreated 的成员变量?那可能吗?是否有某种最佳做法可以避免这样做/建议不要这样做?
谢谢
编辑:另外,我将如何为这样的类定义构造函数?
Edit2:我知道公共成员变量是不好的做法,我只是想知道这种设计在 C++ 中是否是一个好主意。
【问题讨论】:
-
这是 C++ 而不是 Java! ;) 在 C++ 中没有 纯接口 这样的东西(如果有,它是人为的 - 即开发人员强制执行)。因此,您可以在 C++ 的基类中包含任何您想要的内容,包括成员变量。但是使用适当的封装......就像你对任何其他类的普通构造函数一样......
-
@Nim 是的,我明白,但我从未真正使用过 Java :) 但我正在阅读一些 Java 代码,想知道我是否可以在 C++ 中“模仿”Java 接口。
-
@Peter R.,没有什么能阻止您尝试从 C++ 模仿 Java,请注意编译器不会强制执行任何限制(如上述限制)。
-
@Peter R. 为什么?再次回到我原来的观点,你在用 C++ 编程,为什么要混合概念?如果基类允许你存储通用性——为什么你希望所有派生类都实现相同的东西——只是为了让它像 Java 一样?
-
@Nim 我只是想尝试一下。这不是真正的生产代码,它只是在我脑海中闪过,我想我会得到一些反馈。也许如果我使用接口,那么很多代码都可以重用和轻松扩展,你不觉得吗?
标签: c++