c语言和c++中struct的区别

1. 虽然长的一样,但是本质上类型不同:C语言中:struct是用户自定义数据类型(UDT);C++中struct是抽象数据类型(ADT),所以下面代码:

struct HE
{
     int a;    
};

在C里面实际上数据类型为 (struct HE),所以定义一个结构HE变量都要 带上struct. 

struct HE a;   //C语言 变量方式

而在C++里面实际上数据类型为HE(主要是因为结构体被当成类对待了),所以定义变量不需要 struct.

HE a; //C++语言 变量

由于C++中的struct是抽象数据类型,所以可以继承也可以实现多态,只是因为有了class 一般不用它。 

 2.  C++语言将struct当成类来处理的,所以C++的struct可以包含C++类的所有东西,例如构造函数,析构函数,友元等,C++的struct和C++ class 唯一不同就是struct成员默认的是public, C++默认private

     这里不要记混了,C++中的struct为了和C语言兼容,所以默认也是public 的。

     而C语言struct不是类,不可以有函数,也不能使用类的特征例如public等关键字 ,也不可以有static关键字,说到底它只是一些变量的集合体,可以封装数据却不可以隐藏数据。

【总结】

struct     C语言C++
成员没有函数成员,只有数据函数和数据都可以有
访问权限没有访问权限的设定,及对外不隐藏数据有访问权限的设定private,public,protected
是否可以继承不可以有继承关系

【补充】

在C里面,你可以 

struct S { 
    int a, b; 
}s_instance; 

也可以 这样:

typedef struct { 
    int a, b; 
}S; 

S s_instance; 

注意:前者struct S {} 是一个类型,中间的S是一个tag,所以只能用1次。 
后者typedef把struct {} 定义为类型S,所以S可以多用。

基础的东西不用就忘记了....

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值