【问题标题】:Why should I even consider using structs in C++? [duplicate]为什么我什至应该考虑在 C++ 中使用结构? [复制]
【发布时间】:2017-02-16 23:28:11
【问题描述】:

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

谢谢,

【问题讨论】:

  • C++ 中没有“结构”之类的东西。有struct 关键字,但它用于声明一个
  • @KerrekSB 这就是我不知道的。使用 'struct' 关键字只是定义仅由数据成员组成的类的另一种方法吗?
  • 甚至没有。它“只是定义类的另一种方式”,句号。
  • 唯一不同的是默认访问策略是public而不是private。
  • 文档。许多人在创建普通聚合数据时使用struct,在定义业务对象和数据抽象等时使用class

标签: c++ class struct


【解决方案1】:

当你有一个所有东西都是公开的 POD 类型时,只需要保存一行......

struct Color {
    int r;
    int g;
    int b;
};

class Color {
public:
    int r;
    int g;
    int b;
};

对于只是装东西的愚蠢容器的对象来说,这也是一种常见的做法。哑意味着没有构造函数、操作符、方法。

【讨论】:

    【解决方案2】:

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

    class MyClass : public Base1, public virtual Base2 {
    public:
        void fun1() override;
    
    private:
        int m1;
    };
    

    现在考虑这个带有结构的例子:

    struct MyClass : Base1, virtual Base2 {
        void fun1() override;
    
    private:
        int m1;
    };
    

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

    你应该问的问题是“我为什么要考虑在 C++ 中使用类?”,因为 IMO 和 struct 是相同的但不那么冗长。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2020-02-18
      • 2010-10-29
      相关资源
      最近更新 更多