为啥我什至应该考虑在 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++ 过于冗长,但在检查他们的代码时,它看起来更像第一个示例。我发现struct
比class
更容易阅读。在我的项目中,我到处使用 struct。
你应该问的问题是“我为什么要考虑在 C++ 中使用类?”,因为 IMO 和 struct 是相同的但不那么冗长。
【讨论】:
以上是关于为啥我什至应该考虑在 C++ 中使用结构? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 std::vector 而不是 realloc? [关闭]