在C ++中声明结构是否有优势?为什么我不应该只创建一个只包含数据成员的类(即没有方法)?
谢谢,
答案 0 :(得分:5)
当你有一个POD类型,其中一切都是公开的是保存一行......
struct Color {
int r;
int g;
int b;
};
VS
class Color {
public:
int r;
int g;
int b;
};
对于那些只是愚蠢容器的物体来说,这也是常见的做法。愚蠢意味着没有构造函数,运算符,方法。
答案 1 :(得分:3)
我最喜欢的原因是继承。考虑这段代码:
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是相同的但是不那么详细。