关于oop:何时在c ++中使用struct over class

When to use struct over class in c++

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
When should you use a class vs a struct in C++?

如果在使用C++编写程序时,应该使用结构声明而不是类声明吗?

  • 从未!???
  • 有什么……让人感觉好点的吗?

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

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


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

    我发现区别主要在程序员的头脑中——按照惯例,我们通常使用structs来组合小对象,而没有复杂的功能——例如,只有3个成员的Point——坐标。荚果类型。

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

    例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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.
    };