这是一个非常简单的问题,但在某些情况下我似乎找不到选择一个的一般规则。
假设我有一个简单的 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_;
}
好吧,但为什么不将其设为具有公共(public) 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;
}
所以我想这个问题的一个子问题是我如何决定何时将成员变量设为私有(private)。我知道面向对象的纯粹主义者可能会说总是,但我不确定这样做有什么好处。
非常感谢。
最佳答案
regarding class vs. struct :
如果不需要成员函数,则使用结构,否则使用类。
regarding getters and setters :
如果您需要直接访问成员 - 将其公开。将它们设置为私有(private)并通过 getter/setter 进行访问的唯一原因是,如果您需要在访问它们时执行某种处理,例如检查有效性或重新计算其他依赖成员。
关于c++ - 一般来说,如何在 C++ 中的结构体和类之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543179/