为什么我甚至应该考虑C++中的结构? 在C++中声明结构是否有优势?我为什么不创建一个只包含数据成员的类呢。没有办法

为什么我甚至应该考虑C++中的结构? 在C++中声明结构是否有优势?我为什么不创建一个只包含数据成员的类呢。没有办法,c++,class,struct,C++,Class,Struct,谢谢,当你有一个所有东西都是公共的豆荚类型时,它会保存一条线 struct Color { int r; int g; int b; }; vs 对于只是简单的东西容器的对象来说,这也是一种常见的做法。Dumb意味着没有构造函数、运算符和方法。我最喜欢的原因是继承。考虑这个代码: class MyClass : public Base1, public virtual Base2 { public: void fun1() override; private:

谢谢,

当你有一个所有东西都是公共的豆荚类型时,它会保存一条线

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


对于只是简单的东西容器的对象来说,这也是一种常见的做法。Dumb意味着没有构造函数、运算符和方法。

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

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++ C++中的类,因为IMO、StULTE是相同的但不是冗长的。有struct关键字,但它用于声明一个类。@KerrekSB这是我不知道的。使用“struct”关键字仅仅是定义仅由数据成员组成的类的一种替代方法吗?甚至不是。这只是定义类period的另一种方法。唯一的区别是默认的访问策略是public而不是private.Documentation。许多人在创建普通聚合数据时使用struct,在定义业务对象和数据抽象等时使用类。

struct MyClass : Base1, virtual Base2 {
    void fun1() override;

private:
    int m1;
};