当前位置: 首页 > news >正文

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

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

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

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

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

方法的存储 

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

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

初始化器

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

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

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

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

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

二、初始化器的相互调用

三、两段式初始化 1.25

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

 

四、安全检查

五、重写 1.56

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

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

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

六、自动继承

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

 

 

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

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

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

http://www.dtcms.com/a/115376.html

相关文章:

  • 2.环形队列
  • LangChain vs LlamaIndex:构建 AI 知识库系统(文本嵌入、向量数据库)
  • C语言:几种字符串常用的API
  • 13.我的seafile网盘,多端同步我做主
  • Redis(笔记)
  • TypeScript面试题集合【初级、中级、高级】
  • DiffAD:自动驾驶的统一扩散建模方法
  • ChatGPT 4:解锁AI文案、绘画与视频创作新纪元
  • 蓝桥杯 web 水果拼盘 (css3)
  • Elasticsearch DSL 中的 aggs 聚合
  • 字符串的replace、replaceAll、split()方法
  • 主流程发起,去除子流程的时长计算问题
  • 【愚公系列】《高效使用DeepSeek》055-可靠性评估与提升
  • sklearn的Pipeline
  • Kotlin 中的 `reified` 关键字全解析:保留类型信息 + 优化高阶函数的双重魔法
  • 中国钧瓷收藏市场现状和风险警示
  • 1.1 测试计划阶段:如何制定高效的测试策略
  • JS页面尺寸事件
  • 软件项目管理
  • MySQL-SQL-DML语句、INSER添加数据、UPDATE更新数据、DELETE删除数据
  • 阅读笔记“Wi-BFI”
  • 2025.3.31-2025.4.6文献阅读
  • 正确安装GPU显卡驱动、CUDA、cuDNN的详细教程
  • 【Linux网络】以太网(数据链路层)
  • RobotFrameWork环境搭建及使用
  • SQLite 注入:深入理解与防范策略
  • Python爬虫教程010:使用scrapy爬取当当网数据并保存
  • 文件操作和IO ——Java
  • 面向对象编程(OOP)的理解
  • LINUX 5 vim cat zip unzip