gpt4 book ai didi

c++ - C++ 中的虚拟类可以有成员变量吗?

转载 作者:IT老高 更新时间:2023-10-28 21:34:52 24 4
gpt4 key购买 nike

假设我有一个纯虚拟类,我可以在 C++ 中做这样的事情吗:

class ITreatable
{
public:
bool hasBeenTreated; // <- Can this be here?
virtual bool Treat() = 0;
};

如果没有,如何确保继承 ITreatable 的类有一个名为 hasBeenTreated 的成员变量?那可能吗?是否有某种最佳做法可以避免这样做/建议不要这样做?

谢谢

编辑:另外,我将如何为这样的类定义构造函数?

Edit2:我知道公共(public)成员变量是不好的做法,我只是想知道这种设计在 C++ 中是否是一个好主意。

最佳答案

绝对的。

严格来说,不存在“虚拟类”这样的东西。我了解您使用该术语表示仅由数据成员和虚拟成员函数构成的类。

考虑到只有函数可以是虚函数;如果您希望以多态方式访问数据成员,则必须通过函数来​​实现。因此,请使用虚拟 getter/setter 函数,并保持数据成员的私密性。

关于c++ - C++ 中的虚拟类可以有成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052131/

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