C结构和C ++结构
有谁能告诉我什么是C和C ++结构之间的主要区别。
在C ++中, struct
和class
是完全相同的,除了该结构默认public
可见性和类默认为private
可见性。
在C中,结构体名称在它们自己的命名空间中,所以如果你有struct Foo {};
,你需要写struct Foo foo;
创build一个这种types的variables,而在C ++中,你可以只写Foo foo;
,尽pipeC风格也是允许的。 C程序员通常使用typedef struct {} Foo;
允许C ++语法用于variables定义。
C编程语言也不支持可见性限制,成员函数或inheritance。
在C ++中,结构像类一样行为,允许方法,构造函数,析构函数等。
类和C ++结构之间的主要区别在于结构中的所有内容都是默认公开的,而类中的所有内容都是默认的私有的。 (即:外面什么都不能直接访问它们)
C:我们不能在c中定义结构中的函数。
C ++:我们可以在c ++中定义函数结构。
C结构更类似于复合数据结构的定义
C ++结构可以被认为是一个类,但是所有成员variables的范围都是默认公开的。
除了上面的答案之外,请记住,C ++结构支持inheritance,因此可以包含指向vtable的指针。 在跨进程序列化和反序列化这些结构时,这可能会产生很大的差异。 模板也支持。
C和C ++结构有几处不同之处
-
在C中,我们定义struct关键字是必要的,以在C ++中创build结构types值,这是没有必要的。
-
在C中没有函数结构,而在C ++中,我们可以直接定义可以直接访问结构数据成员的函数(函数名称是C ++中的方法)
-
C中没有访问修饰符的概念,而在C ++中我们可以find访问修饰符(例如private和public)。 默认情况下都是公开的。
-
C中的结构不能有静态成员,而C ++结构中可以有静态成员。
-
C中空结构的大小是违反约束的,但在C ++中总是为1。
-
我们可以在C ++中同时使用结构体的指针和引用,但只允许指向结构体的指针。 (引用不是C语言的特征)