【发布时间】:2012-11-24 16:39:44
【问题描述】:
这是一个非常简单的问题,但我似乎找不到在某些情况下选择一个而不是另一个的一般规则。
假设我有一个简单的Point 类,如下所示:
class Point
{
public:
Point();
Point(double, double, double);
Point(const Point& other);
Point& operator=(const Point& other);
bool operator==(Point& lhs, Point& rhs);
void translate(double, double, double);
double getX() const;
double getY() const;
double getZ() const;
void setX(const double);
void setY(const double);
void setZ(const double);
private:
double x_, y_, z_;
}
好吧,但是为什么不把它做成一个带有公共 x、y、z 的结构并节省一半的代码呢?
另一个例子假设我有一个像这样的Header 结构:
struct Header
{
short int id;
short int version;
size_t indexOffset;
size_t indexSize;
}
在什么情况下我想让它成为一个类?上述内容与我在这样的质量代码中也看到的内容之间是否有任何区别:
class Header
{
public:
short int id;
short int version;
size_t indexOffset;
size_t indexSize;
}
所以我想这个问题的一个子问题是我如何决定何时将成员变量设为私有。我知道 OO 纯粹主义者可能会说总是,但我不确定它的好处。
非常感谢。
【问题讨论】:
-
@Caribou:我看不出这些与我的问题有什么关系。我在问一些关于 OOP 和封装的一般规则。我知道类和结构之间的区别是什么。
-
@Marian 在人们从堆栈溢出中发布 3 个链接之后,您回答了您自己的问题 - 基本上告诉我们 stuct 和 class 之间的区别是什么......以及您自己的评论“我知道OO 纯粹主义者可能会一直说,但我不确定它的好处。”