gpt4 book ai didi

c++ - RAII 和未初始化的值

转载 作者:太空狗 更新时间:2023-10-29 23:26:10 25 4
gpt4 key购买 nike

只是一个简单的问题:

如果我有一个简单的 vector 类:

class Vector
{
public:
float x;
float y;
float z;
};

RAII 概念是否也适用于此?即提供一个构造函数来将所有值初始化为某些值(以防止使用未初始化的值)。

编辑 或提供一个构造函数,明确要求用户在实例化对象之前初始化成员变量。

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!
};

如您所见...如果我必须编写一个构造函数来初始化每个成员,那将非常乏味。

想法?

最佳答案

RAII 中的“R”代表资源。并非一切都是资源。

许多类,例如 std::vector,都是自初始化的。您无需担心这些。

POD 类型不是自初始化的,因此将它们初始化为一些有用的值是有意义的。

关于c++ - RAII 和未初始化的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784330/

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