为啥我什至应该考虑在 C++ 中使用结构? [复制]

Posted

技术标签:

【中文标题】为啥我什至应该考虑在 C++ 中使用结构? [复制]【英文标题】: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 【参考方案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 是相同的但不那么冗长。

【讨论】:

以上是关于为啥我什至应该考虑在 C++ 中使用结构? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥错误处理程序触发时没有错误? [复制]

为啥使用 std::vector 而不是 realloc? [关闭]

c++ 中的代码 `[&]()` 是啥意思? [复制]

为啥数据框的格式会自动应用于另一个? [复制]

Flutter:我应该如何使用 InheritedWidget?

为啥使用框架的功能被认为是错误的