可能重复:
When should you use a class vs a struct in C++?
What are the differences between struct and class in C++
struct X{
};
class X{
};
在C ++中,class
和struct
可以完成相同的任务。我的问题是我应该在哪里使用class
和struct
?
答案 0 :(得分:4)
C ++中结构和类之间的区别是:
但基本上你使用结构的任何地方都可以使用一个类,反之亦然,所以它取决于你使用什么。通常,当你有方法时,更常见的是使用类,当你只有数据时,结构更常用。
我想说如果你想让所有数据成员都是公共的,而你没有方法,那么就使用一个结构。否则使用一个类。但这只是个人偏好。
答案 1 :(得分:2)
无所谓,两者都是等价的。唯一的区别是struct
默认为公共成员可见性和公共继承,class
默认为私有。
答案 2 :(得分:1)
structs将成员公开为默认类,默认情况下,类会将成员私有化。
Personnaly我将struct用于非常小的容器。
我通常使用带有getter&amp ;;的私人成员的课程。 setter方法
答案 3 :(得分:1)
你用这些话回答了自己的问题:
在C ++中,同样的任务可以通过类和结构来完成。
所以用任何让你快乐的东西。
当我不想明确地写struct
时,我通常会使用public
,尤其是当我编写模板元编程时。
答案 4 :(得分:1)
首先是“为什么会这样?”
我应该指出为什么C ++支持结构。
记住C ++的观点是双重的,首先是面向对象的语言,但也可以作为“更好的C”,具有更强的类型检查和许多其他好处。但是,为了保持向后兼容(并且确实为了改善这种向后兼容性),结构仍然存在。
还要记住原来的C ++是cfront,它本质上是C的预编译器。你可以在原始C ++中用C语言做的任何事情,这样做很痛苦,没有保证没有一种执行规则的机制。
考虑到这一点,让我们再次看一下差异。
当你希望成员是公共的DE DEFAULT时使用struct(错误的表单,永远不要假设默认值)。但是,当你真的想要一些行为类似于C结构的东西时,也可以使用结构。它通常只有很少的方法,如果有的话,它通常没有运算符。这不是语言的要求,它被许多(如果不是大多数)C ++程序员认为是很好的形式。如果您真的想要一个类的所有功能,请使用类。
结构和类是相同的,除了访问(在声明和派生对象中)。
示例:
class A
{
int i;
};
struct B
{
int j;
};
class C : A
{
// i is private to A.
};
struct D : B
{
// j is public
};