类中的默认安全性参数

时间:2013-12-22 07:28:59

标签: c++ class struct access-levels

我在大量代码中注意到人们在将代码编入其中之前声明了他们的classes public。这是偏好还是有更多意义?对于我来说,struct's默认参数是public并且正如类所做的那样(正如我已阅读),这似乎是多余的。

代码示例

class box
{
public:
void setParam( int x, int y) { . . . }
int getWidth(){ . . . }
int getHeight(){ . . . }
private:
int width, height;
}

可以在不在结构中声明公开的情况下完成。

2 个答案:

答案 0 :(得分:2)

一般来说,这是一个约定/语义的问题,而不是因为技术原因。

理由通常是struct被保留用于POD使用,辅助数据结构,“数据有效载荷”,仿函数等。而class es用于封装非平凡操作的类型通常必须尊重某种类型的不变量。

答案 1 :(得分:2)

看起来像你的班级的struct可能如下所示:

struct Rect
{
 int x, y, w, h;
};

它立即向读者传达它的意图是一个简单的POD类型,没有铃声和口哨声。另一方面,您的示例具有访问器方法,如果他们打算做的只是获取并设置您的私有成员,这些方法似乎是多余的。你也可以将它们公之于众。


我的评论示例:

class box
{
  Rect _surface;
public:
  explicit box(Rect surface) : _surface(surface)
  {
    if (surface.w <= 0 || surface.h <= 0) throw bad_dimensions();
  }
};
相关问题