何时在 C++ 中使用结构而不是类

use*_*292 1 c++ oop struct class

可能的重复:
什么时候应该在 C++ 中使用类和结构?

在使用 C++ 编写程序时,何时应该使用 STRUCT 声明而不是 CLASS 声明?

  1. 绝不 !!?
  2. 任何事情......让你感觉更好的那个?

Luc*_*ore 6

除了默认访问级别外,astruct和 a完全class等效

我发现差异主要在于程序员的想法 - 按照惯例,我们通常使用structs 来组合小对象,没有复杂的功能 - 例如, aPoint只有 3 个成员 - 坐标。POD 类型。

另一方面,我们通常使用classes 来包含更大的对象,具有复杂的功能和相当大的接口。

例如:

struct Point { 
   int x,y,z; 
};

class Shape{
   std::vector<Point> corners;
public:
   Shape(const std::vector<Point> corners);
   double getVolume();
   double getArea();
   bool   isConvex();
   //etc.
};
Run Code Online (Sandbox Code Playgroud)


Dou*_* T. 5

两者之间的唯一区别是默认情况下struct是公开的,而class成员是私有的。

我的规则是struct在我的意思是一组相关数据时使用,而在读取/写入它们时没有任何特殊的语义。使用class时,我打算裹在更丰富的语义数据(读法)是更加有意义,提供任何所需的保护,或实施一些更抽象。