C++封装数组

Mar*_*rio 4 c++ arrays encapsulation

对不起,如果之前有人询问,但我找不到足够明确的答案.

在C++中提供对数组成员的公共只读访问权的正确方法是什么?

如果我有类似以下的类:

   
class Particle
{
    double _position[10];

public:
    double* get_position()
    {
       return _position;
    }
};
   

我想要返回一个指向数组的指针真的很糟糕,因为这意味着它可以在类之外的任何时候更改,是否足以返回一个const指针?

我已经看到了关于在C++中使用数组的其他问题,以及如何使用向量是一个更好的选择,但我对这个问题非常好奇.

你可以看到我只是一个C++菜鸟,如果这是一个愚蠢的问题,对不起.

PD抱歉我的英语不好.

Aar*_*ela 7

返回const*并不是更好,因为调用者可以将常量抛弃.

考虑提供一个const Iterator而不是返回一个指针.这使您的类用户可以访问位置,而不会暴露实现细节.如果您以后想要从固定长度数组切换到STL容器,则可以这样做而不会影响该类的用户.

  • 抛出`const`是未定义的行为.如果用户努力尝试,用户总是可以颠覆所需的行为; 这不是在原始数组上使用STL的原因...... (3认同)
  • const迭代器如何颠覆你的观点?我可以抛弃去引用值的常量. (2认同)