Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C结构和C++;结构_C++_C - Fatal编程技术网

C++ C结构和C++;结构

C++ C结构和C++;结构,c++,c,C++,C,谁能告诉我主要的区别是什么 在C++ C++结构中, C++中,结构的行为类似类,允许方法、构造函数、析构函数等。p> P>类和C++结构的主要区别是默认情况下内部结构的所有内容都是公共的,而类内部的所有内容默认为私有的。(即:外部的任何东西都不能直接访问它们)C structs更类似于复合数据结构的定义 C++结构可以看作是一个类,但是所有成员变量的范围都默认为公共的。 < > > C++ >结构> >代码>类是完全相同的,除了结构默认为“代码>公共< /COD>可见性和类默认为私下

谁能告诉我主要的区别是什么
在C++ C++结构中,

C++中,结构的行为类似类,允许方法、构造函数、析构函数等。p>
<> P>类和C++结构的主要区别是默认情况下内部结构的所有内容都是公共的,而类内部的所有内容默认为私有的。(即:外部的任何东西都不能直接访问它们)

C structs更类似于复合数据结构的定义


C++结构可以看作是一个类,但是所有成员变量的范围都默认为公共的。

< > > C++ >结构> <代码> >代码>类<代码>是完全相同的,除了结构默认为“代码>公共< /COD>可见性和类默认为<代码>私下<代码> VisualBury.< 在C中,结构名称在它们自己的名称空间中,因此如果您有
structfoo{},您需要编写
struct Foo Foo创建一个类型的变量,而C++中可以编写<代码> Fo-Fo;<代码>,尽管也允许使用C样式。C程序员通常使用
typedef struct{}Foo允许变量定义的C++语法。< /P>

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

< P>除了上面的答案,请记住C++结构支持继承,因此可以包含指向VTABLE的指针。在跨进程序列化和反序列化这些结构时,这会产生很大的不同。也支持模板。

C:我们不能在C中定义结构内部的函数


C++:我们可以在C++中定义结构内的函数。C+C++结构

有几个差异
  • 在C中,定义结构关键字是必要的,而在C++中不需要。 在C++中,结构中没有函数,而C++中可以定义直接访问结构数据成员的函数(函数是C++中的名称)

  • 。 在C++中,结构中没有访问修改器的概念,而C++中可以找到访问修改器(例如私有和公共)。默认情况下,所有都是公共的

    <>结构> C中不能有静态成员,而C++结构中可以有静态成员。

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

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


    C结构不能包含方法,而C++结构可以:)C结构基本上用于分组数据。C++结构支持继承。根据我的CS教授,C++结构支持私有成员,结构和类之间的另一个区别是C++中的“结构不能失败”结构名称也在它们自己的名称空间中。不同之处在于,在搜索标识符时,编译器将首先查找通用名称空间,如果未找到,还将检查用户定义的类名称空间。在C++中,他的正确性是:<代码>结构x{};void x(){}
    而这不是
    typedef struct x{}x;void x(){}
    ,因为全局标识符空间已经有了一个
    x
    (typedef),函数的声明将发生冲突(顺便说一句,在第一个示例中,要创建一个变量,您需要编写
    struct x var
    ,以便只将标识符作为用户定义的类型进行搜索)。而不是提及vtables(不在C++语言规范中)你应该提到虚拟> /Cult>方法。序列化和反序列化结构的最佳过程是具有访问数据字段(成员)的功能。C++和C++语言都适用。一个主要原因是编译器允许在成员之间添加填充(适用于两种语言)。在C中,填充是二进制数据表示中序列化和反序列化的几个未使用字节的问题。用C++,它可以在使用具有虚函数的类的对象时产生问题。在C中,当声明结构类型的变量时,必须编写Stutt关键字。示例:结构ABC-VAR1,VAR2;而C++则尽量减少派生数据类型和内置数据类型之间的差距。因此,像我们定义int或char一样,这里可以直接声明结构变量:是的,我理解你的意思,你必须输入struct来声明新的变量