结构体与类

这篇博客探讨了Swift中类和结构体的共性和差异。共同点包括定义属性、方法、下标、构造器和协议遵循。不同点则涉及继承、类型转换、析构函数、引用计数以及它们在内存中的存储位置。类支持继承,结构体不支持;类实例可以通过类型转换在运行时检查类型,结构体则不能。此外,类是引用类型,存储在堆上,而结构体是值类型,存储在栈上。Swift为结构体自动提供成员初始化器,但类需要手动实现。博客还讨论了构造器的规则以及结构体中需要使用`mutating`关键字来修改属性的情况。

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

类和结构体的共同点:

///定义存储值的属性

///定义方法

///定义下标

///定义构造器

///使用extension拓展功能

///遵循协议

类和结构体的不同点:

///类有继承的特性,结构体没有

///类型转换可以在运行时检查和解释类实例的类型

///类有析构函数用来释放其分配的资源

///引用计数允许对一个类实例有多个引用

///类是引用类型,也就意味着一个类类型的变量不直接存储具体的实例对象,是对当前存储具体实例内存地址的引用。存储在堆上

///结构体是值类型,存储在栈上

swift中创建类和结构体的实例时,必须为所有的存储属性设置一个合适的初始值

///类编译器不会自动提供成员初始化器,但是结构体会

///类必须提供对应的指定构造器,也可以为当前类提供便利构造器(注意:便利构造器必须从相同的类里调用另外一个初始化器)

///指定初始化器必须保证在向上委托给父类初始化器之前,其所在类引入的属性都要初始化完成

///便利构造器必须先委托同类中的其他初始化器,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值