C结构和C++结构

Vij*_*jay 42 c c++

有人可以告诉我C和C++结构之间的主要区别是什么.

Tro*_*nic 69

在C++ structclass有同样的事情,不同的是结构默认public的知名度和类默认private可见性.

在C中,结构名称在它们自己的命名空间中,所以如果你有struct Foo {};,你需要编写struct Foo foo;来创建该类型的变量,而在C++中你可以只写Foo foo;,尽管也允许使用C样式.C程序员通常使用typedef struct {} Foo;C++语法来定义变量.

C编程语言也不支持可见性限制,成员函数或继承.

  • 在C++中,结构名称也在它们自己的名称空间中.不同之处在于,在搜索标识符时,编译器将首先查看通用名称空间,如果未找到,还将检查用户定义的类名称空间.在c ++中他是正确的:`struct x {}; void x(){}`虽然这不是`typedef struct x {} x; void x(){}`,因为全局标识符空间已经有一个`x`(typedef)函数的声明会发生碰撞(BTW,在第一个例子中,创建一个你需要编写`struct x var`的变量以便仅将标识符作为用户定义的类型进行搜索. (5认同)

spe*_*der 11

在C++中,结构的行为类似于类,允许方法,构造函数,析构函数等......

类和C++结构之间的主要区别在于,默认情况下,结构内部的所有内容都是公共的,而类中的所有内容都是私有的.(即:外面没有人可以直接访问它们)

  • 根据我的CS教授,结构和类之间的另一个区别是"你不能让结构失败" (10认同)

小智 5

C和C++结构有几个区别

  1. 在 C 中,我们定义 struct 关键字是创建结构类型值所必需的,而在 C++ 中则不需要。

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

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

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

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

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