【发布时间】:2020-12-13 21:48:56
【问题描述】:
我正在创建一个游戏引擎类,它将有一个“记录器”成员。 像这样:
class Engine {
public:
const Logger logger;
Engine();
~Engine();
void init();
void start();
};
我的问题是是否可以制作“记录器”,这样我就不能覆盖变量,但仍要修改对象本身?
【问题讨论】:
-
C++ 中没有变量覆盖这样的东西。不清楚你想要什么。
-
似乎在java中
=具有“覆盖”(如您所说)对象的特殊含义。但在 C++ 中,它没有任何特殊含义。对于类,它只是一个成员函数,它遍历每个字段并为它们分配新值。因此,创建一个对象const会禁用分配,就像它禁用任何可以修改成员的成员函数一样。 -
我不明白。你想修改它,但你不想修改它。您希望它是 const,但您希望它是可变的。嗯!
-
在 Java 中,您的类对象是语法更漂亮的指针。
-
@AsteroidsWithWings 我希望能够修改它的成员并调用非常量方法,同时不允许另一个实例通过分配来替换它。我的想法是覆盖分配运算符,但这似乎不合逻辑。如果您想更好地理解我的意思,请查看 final 关键字在 java 中的作用。
标签: java c++ constants overriding final