我在大量代码中注意到人们在将代码编入其中之前声明了他们的classes
public
。这是偏好还是有更多意义?对于我来说,struct's
默认参数是public
并且正如类所做的那样(正如我已阅读),这似乎是多余的。
代码示例
class box
{
public:
void setParam( int x, int y) { . . . }
int getWidth(){ . . . }
int getHeight(){ . . . }
private:
int width, height;
}
可以在不在结构中声明公开的情况下完成。
答案 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();
}
};