C结构和C ++结构

有谁能告诉我什么是C和C ++结构之间的主要区别。

在C ++中, structclass是完全相同的,除了该结构默认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 ++结构有几处不同之处

  1. 在C中,我们定义struct关键字是必要的,以在C ++中创build结构types值,这是没有必要的。

  2. 在C中没有函数结构,而在C ++中,我们可以直接定义可以直接访问结构数据成员的函数(函数名称是C ++中的方法)

  3. C中没有访问修饰符的概念,而在C ++中我们可以find访问修饰符(例如private和public)。 默认情况下都是公开的。

  4. C中的结构不能有静态成员,而C ++结构中可以有静态成员。

  5. C中空结构的大小是违反约束的,但在C ++中总是为1。

  6. 我们可以在C ++中同时使用结构体的指针和引用,但只允许指向结构体的指针。 (引用不是C语言的特征)