【问题标题】:When to use struct over class in c++ [duplicate]何时在 C++ 中使用 struct over class [重复]
【发布时间】:2012-12-04 20:26:37
【问题描述】:

可能重复:
When should you use a class vs a struct in C++?

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

  1. 从不!! ?
  2. 有什么...让你感觉更好的吗?

【问题讨论】:

  • Arghhhh... 我讨厌我的名字被放在我没有选择的关闭理由旁边。
  • 请在此处阅读结构和类的详细信息:stackoverflow.com/questions/54585/…。基本上我将结构用于成员可以取任何值的数据结构,这样更容易。

标签: c++ oop class struct


【解决方案1】:

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

我的规则是使用struct,当我的意思是一组相关数据,在读/写它们时没有任何特殊语义。当我打算以更丰富的语义(读取方法)包装数据时使用class,这些语义更有意义,提供任何需要的保护,或者实现更抽象的东西。

【讨论】:

    【解决方案2】:

    除了默认访问级别之外,structclass完全等效

    我发现差异主要在程序员的脑海中 - 按照惯例,我们通常使用 structs 将小对象放在一起,没有复杂的功能 - 例如,Point 只有 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.
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 2023-03-06
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      相关资源
      最近更新 更多