【发布时间】:2019-09-12 19:50:03
【问题描述】:
所以最近我刚刚看到一个关于 c++ 的视频,它解释了成员初始化器列表的使用。我想知道是否有办法在解构器中使用排序的成员 uninizializer(或类似的东西)列表。例如,我有一个名为 Entity 的类,它有 2 个私有值 x 和 y,我在我的 Initializer 中通过成员初始化器列表将它们都设置为 5,但我必须以正常方式在解构器中取消初始化它们(x = 0;. ..)。
class Entity
{
private:
int x, y;
public:
Entity(): x(5), y(5)
{
}
~Entity() //Here I want to set x and y to 0 like this: x(0), y(0)
{
x = 0;
y = 0;
}
};
【问题讨论】:
-
在它们不复存在之前将它们设置为零的目的是什么?
-
听起来像是 XY 问题。为什么要这样做?
-
当你想“取消初始化”一个微不足道的对象时,你可以忽略它的当前值。无论如何,它不是可测试的属性。如果你愿意,就假装它是未初始化的。
-
使用 RAII。换句话说,将您的整数包装到一个带有析构函数的类中,该析构函数将值设置为零。然后,您不需要为使用这些包装的 int 的类编写析构函数。但是,确实,为什么?
-
@hyde 99.999% 的时间将被优化掉,因为它没有任何效果。
标签: c++ class constructor