请问有谁请告诉我主要区别是什么 C& C ++结构。
答案 0 :(得分:67)
在C ++中struct
和class
完全相同,除了该结构默认为public
可见性,类默认为private
可见性。
在C中,结构名称在它们自己的命名空间中,所以如果你有struct Foo {};
,你需要编写struct Foo foo;
来创建该类型的变量,而在C ++中你可以只编写{{ 1}},虽然也允许C风格。 C程序员通常使用Foo foo;
来允许C ++语法用于变量定义。
C编程语言也不支持可见性限制,成员函数或继承。
答案 1 :(得分:11)
在C ++中,结构的行为类似于类,允许方法,构造函数,析构函数等......
类和C ++结构之间的主要区别在于,默认情况下,结构中的所有内容都是 public ,而类中的所有内容都默认为 private 。 (即:外面没有人可以直接访问它们)
答案 2 :(得分:3)
除了上面的答案,请记住C ++结构支持继承,因此可以包含指向vtable的指针。在跨进程序列化和反序列化这些结构时,这会产生很大的不同。也支持模板。
答案 3 :(得分:3)
C:我们无法在c。
中定义结构内部的函数C ++:我们可以在c ++中定义结构内部的函数。
答案 4 :(得分:3)
C和C ++结构存在一些差异
在C中,我们定义struct关键字是创建结构类型值所必需的,而在C ++中则不是必需的。
在C中,结构中没有函数,而在C ++中我们可以定义直接访问结构数据成员的函数(函数是C ++中的方法名称)
在C语言结构中没有访问修饰符的概念,而在C ++中我们可以找到访问修饰符(例如私有和公共)。默认情况下,所有内容都是公开的。
C中的结构不能有静态成员,而在C ++结构中可以有静态成员。
空结构的大小在C中是约束违规,但在C ++中总是1。
我们可以在C ++中使用指针和struct的引用,但只允许指向结构的指针。 (参考文献不是C语言的特征)
答案 5 :(得分:2)
C结构更类似于复合数据结构的定义
C ++结构可以被视为一个类,但所有成员变量的范围都默认为公共。