`
yangyou230
  • 浏览: 1683501 次
文章分类
社区版块
存档分类

C和C++中struct的区别

 
阅读更多

C语言中Struct是用户自定义数据类型(UDT),C语言中struct是没有权限设置的。它只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员不可以是函数。

C++语言中Struct是抽象数据类型(ADT),它支持成员函数的定义。C++中Struct增加了访问权限,它的成员函数默认访问权限为public,class的为private。在用模板的时候只能写template <class Type>或template <typename Type>不能写template <struct Type>。

此外,如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同,存取class的data member和非virtual function效率和struct完全相同,不管该data member是定义在基类还是派生类的。

如果不是为了和C兼容,C++中就不会有struct关键字。因此建议是:如果不需要与C兼容或传递参数给C程序,不要在C++中用struct。

注意class的data member在内存中的布局可不一定是data member的申明次序。C++只保证处于同一个access section的data member按照申明次序排列。

① C语言的结构体是不能有函数成员的,而C++的类可以有。

② C语言的结构体中数据成员是没有private、public和protected访问权限的,而C++的类的成员有这些访问限定。

③ C语言的结构体是没有继承关系的,而C++的类却有丰富的继承关系。

分享到:
评论

相关推荐

    c++笔记struct和typedef struct彻底明白了

    在 C++ 编程语言中,struct 和 typedef struct 是两个非常重要的概念。今天,我们将深入探讨这两个概念的区别和使用方法。 首先,让我们从基本概念开始。struct 是一种用户定义的数据类型,它可以包含多个变量,...

    C_C++中typedef_struct和struct的用法

    在 C/C++ 中,struct 和 typedef struct 是两个常用的数据类型定义方式,它们之间有着微妙的区别。本文将详细介绍 struct 和 typedef struct 的用法,并通过实例代码演示其差异。 首先,让我们来了解一下 struct 的...

    浅析c与c++中struct的区别

    在C和C++中,`struct`关键字都有用于定义自定义数据类型的用途,但它们在两种语言中的行为和语义存在显著差异。本文将详细分析这两种情况下的不同: ### 1. C的struct与C++的class的区别 在C语言中,`struct`是一...

    C/C++语法知识:typedef struct 用法详解

    5. C 和 C++ 中 struct 和 typedef struct 的区别 在 C 和 C++ 中,有三种定义结构的方法:使用 struct 关键字、使用 typedef struct 和使用匿名结构体。使用 typedef struct 可以简化代码,提高代码的可读性。 ...

    C/C++网络传输struct类型数据

    总结来说,C/C++中网络传输struct类型数据的关键在于理解结构体的内存布局和固定大小,以及在发送和接收两端保持结构体定义的一致性。使用`memcpy`进行字节流的转换,并注意正确设置数据长度,可以有效地实现结构体...

    struct和typedef struct区别

    在编程语言中,struct和typedef struct都是用来定义结构体类型的,但它们之间存在一些关键的区别。 首先,在C语言中,定义一个结构体类型需要使用typedef关键字,例如: ```c typedef struct Student { int a; } ...

    C/C++中结构体(struct)知识点强化

    ### C/C++中结构体(struct)知识点强化 #### 结构体定义与理解 在C/C++编程语言中,**结构体(struct)**是一种用户自定义的数据类型,它允许开发者将不同类型的变量组合在一起形成一个单一的实体。这为解决复杂问题...

    xml和struct之间的相互转换

    XML(eXtensible Markup Language)和C语言中的struct是两种不同的数据表示方式。XML是一种用于标记数据的标准化格式,而struct是C语言中用来结构化数据的类型。在编程中,有时我们需要在两者之间进行转换,以实现...

    c++面向对象基础二(struct详解)

    在C++中,`struct`和`class`在功能上几乎是等价的,主要的区别在于默认的访问修饰符和通常的使用习惯。在实际编程中,选择`struct`还是`class`取决于设计需求和团队规范。如果希望成员默认为公共的,或者在代码风格...

    C语言实现C++多态

    在编程世界中,C++是建立在C语言基础之上,引入了面向对象的特性,其中多态性(Polymorphism)是其核心概念之一。多态性允许我们使用一个通用的接口来处理不同类型的对象,增加了代码的灵活性和可扩展性。而C语言...

    c++环境下struct错误使用崩溃

    C++和c语言的混用已经司空见惯,但其中还不乏一些细节应该注意,用错会导致一些意外发生;本文就c语言环境的struct用在c++后,错误加virtual关键字导致崩溃详述

    详解C++程序中定义struct结构体的方法

    在C++编程语言中,结构体(struct)是C语言中的概念被...综上所述,C++中的struct结构体是一种强大的数据类型,它结合了C语言的数据组织能力和C++面向对象编程的特性,能够方便地用于多种数据表示和逻辑封装的场景中。

    C++中的日期和时间_time_t与struct_tm

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和...

    c和c++的区别理解

    【C和C++的区别理解】 C++是在C语言的基础上发展起来的一种编程语言,它保留了C语言的大部分特性,同时引入了面向对象编程的概念。C++的主要目标是提供高效的面向对象编程能力,以及泛型编程技术,这使得C++特别...

    java和C++通信结构体发送

    标题中的“Java和C++通信结构体发送”指的是在Java和C++这两种不同的编程语言之间,通过网络进行通信时如何有效地传递结构体数据的问题。在跨语言通信中,由于二进制序列化和内存布局的差异,直接传输结构体会面临...

    c++中struct使用注意事项

    1.C++的结构体变量在声明的时候可以省略struct,在c中这样是不可以的,例子如下 #include #include using namespace std; struct test{ int num; string name; }; int main(void) { test t; t.num=1; t.name=...

    C++面试八股文深度总结

    C++中的struct和C语言中的struct在功能上有所增强,C++的struct可以有成员函数、静态成员和继承,而C语言的struct则不具备这些特性。 在C++中导入C函数,使用extern "C"关键字,以保持C语言的调用约定,避免因C++的...

    如何在C++中struct与Class的的区别

    从语法上,在C++中(只讨论C++中)。class和struct做类型定义时... 不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些

    C语言与C++的主要区别是什么

    而在C语言中,虽然可以通过结构体(struct)和指针来模拟类的行为,但不具备真正的面向对象特性。 2. **数据类型**:C++扩展了C语言的数据类型,如string用于处理文本字符串,vector和list等容器类提供了动态数组和...

Global site tag (gtag.js) - Google Analytics