struct 和 class 区别

本文探讨了C语言中struct的基本特性和限制,并对比了C++中struct与class的主要区别,包括默认继承权限和成员访问权限的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct在C和C++区别:

c++最初被称为“c with class”,足见class在c++中的地位。在c++中我们可以用class自定义用户数据类型,然而它还存在一个类似的——struct,他们似乎有着太多的相同的特点与功能。
由于在设计c++时就考虑到要向下兼容c,所以c++中的很多东西都能在c中找到,要谈及struct就要从c谈起。
c中struct的定义如下:
struct  结构名
{
  成员表
};
因为struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程中,struct不能包含任何函数,如下所示:
struct  A
{
int length;
int width;
};
如果出现下面的结构体定义,编译器将报错:
struct  A
{
int length;
int width;
int GetSize()
{
return length*width;
};
};
面向过程的编程认为,数据和数据操作是分开的。然而当struct进入面向对象的c++时,其特性也有了新发展,就拿上面的错误函数来说,在c++中就能运行,因为在c++中认为数据和数据对象是一个整体,不应该分开,这就是struct在c和c++两个时代的差别。

C++中struct和class的区别:

从语法上来讲,class和struct做类型定义时只有两点区别

默认继承权限:如果不明确指定,来自class的继承安置private继承处理,来自struct的继承安置public继承处理。
成员的默认访问权限:class的成员默认private权限,struct默认public权限

C的struct与C++的class的区别:

struct只是作为一种复杂数据类型定义,不能用于面向对象编程,且没有访问权限限制,外部可以访问。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值