关于类:我为什么要考虑在C ++中使用结构?

Why should I even consider using structs in C++?

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

在C++中声明结构是否有优势?为什么我不应该创建一个只包含数据成员(即没有方法)的类?

谢谢,


当你有一个pod类型的时候,所有公共的东西都保存了一条线…

1
2
3
4
5
struct Color {
    int r;
    int g;
    int b;
};

VS

1
2
3
4
5
6
class Color {
public:
    int r;
    int g;
    int b;
};

对于那些只不过是装东西的哑容器的对象来说,这也是常见的做法。哑的意思是没有构造函数、运算符和方法。


我最喜欢的原因是继承。考虑此代码:

1
2
3
4
5
6
7
class MyClass : public Base1, public virtual Base2 {
public:
    void fun1() override;

private:
    int m1;
};

现在用一个结构来考虑这个例子:

1
2
3
4
5
6
struct MyClass : Base1, virtual Base2 {
    void fun1() override;

private:
    int m1;
};

有人说C++过于冗长,但是当检查它们的代码时,它看起来更像第一个例子。我发现structclass容易阅读。在我的项目中,到处都使用struct。

你应该问的问题是"为什么我应该考虑使用C++中的类?",因为imo,结构是相同的,但不那么冗长。