只是一个简单的问题:
如果我有一个简单的向量类:
class Vector
{
public:
float x;
float y;
float z;
};
RAII 概念在这里也适用吗?即提供一个构造函数来将所有值初始化为某些值(以防止使用未初始化的值)。
编辑或提供一个构造函数,该构造函数明确要求用户在对象可以被实例化之前初始化成员变量。
IE
class Vector
{
public:
float x;
float y;
float z;
public:
Vector( float x_, float y_, float z_ )
: x( x_ ), y( y_ ), z( z_ )
{ // Code to check pre-condition; }
};
应该使用 RAII 来帮助程序员忘记在使用之前初始化值,还是开发人员的责任?
或者这是看待 RAII 的错误方式?
我故意让这个例子简单得可笑。我真正的问题是回答一个复合类,例如:
class VectorField
{
public:
Vector top;
Vector bottom;
Vector back;
// a lot more!
};
正如你所看到的......如果我必须编写一个构造函数来初始化每个成员,那是相当乏味的。
想法?