swift-汇编分析多态原理、init

一、结构体和类的本质区别

结构体 编译完就知道调用谁

类 (类似c++ 的虚函数表) 12

直接将对象将来要调用的函数内存地址提前放进类型信息里面,这些类型信息编译完就确定你将来要调用谁,运行过程过程中就去那块内存里面找

方法的存储

二、初始化器 指定初始化器纵向调用 捷初始化器横向调用

2.1 便捷初始化器 必须要调用指定初始化器

初始化器

每一个初始化器保证我每个成员都是要有值的

类偏向于少量指定初始化器,一个类通常只有一个指定初始化器

指定初始化器必须从它的直系父类调用指定初始化器

便捷初始化器最终必须调用一个指定初始化器

便捷初始化器可以调用自己的宁一个便捷初始化器

二、初始化器的相互调用

三、两段式初始化 1.25

先从下往上(保证所有的成员都有值)在从上往下(设置个性话的值)

四、安全检查

五、重写 1.56

当重写父类的指定初始化器时,必须加上override(即使子类的实现是便捷初始化器)

如果子类写了一个匹配父类便捷初始化器的初始化器,不用加上override

因为父类的便捷初始化器永远不会通过子类直接调用,因此,严格来说,子类无法重写父类的便捷初始化器

六、自动继承

如果子类没有自定义任何指定初始化器,它会自动继承父类所有的指定初始化器

如果子类提供了父类所有指定初始化器的实现(要么通过方式①继承,要么重写)

子类自动继承所有的父类便捷初始化器

就算子类添加了更多的便捷初始化器,这些规则仍然适用

相关推荐
水饺编程11 小时前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
水饺编程2 天前
第2章:Linux 基础,whoami 命令
linux·c语言·汇编
水饺编程3 天前
第2章:Linux 基础,pwd 命令
linux·c语言·汇编
半杯咖啡半行码3 天前
STM32之ARM通用汇编指令详解:从指令格式到寻址方式
汇编·arm开发·stm32
Seeing54 天前
音乐111111
汇编
Funlang4 天前
从汇编到Fun语言
汇编
l1t4 天前
DeepSeek总结的有符号、无符号、未对齐:从汇编到 SQL 的教训
汇编·数据库·sql
Hi2024021710 天前
同一个 NMS 算子,两种语言实现:CUDA C 与 Rust 生成 LLVM IR 和 Vortex 汇编的差异
c语言·汇编·rust·gpgpu·vortex·cudac
lhbweilai10 天前
深挖FreeRTOS内核实现(二)
c语言·汇编·stm32·单片机
水饺编程10 天前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio