1

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

代码示例

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

无需在结构中声明它就可以完成。

4

2 回答 2

2

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

基本原理通常是structs 保留用于 POD 使用、辅助数据结构、“数据有效负载”、函子等。而classes 用于封装非平凡操作的类型,这些操作通常必须尊重某种类型的类不变量。

于 2013-12-22T07:35:02.163 回答
2

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

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();
  }
};
于 2013-12-22T07:41:29.423 回答