在最近的一位开发者遇到了Swift中继承的struct
这个话题(或者更确切地说,Swift中缺少继承的struct
)。我认为为什么斯威夫特不支持struct
继承的原因是因为:C++和Swift:如何在C++堆栈框架中处理结构?结构继承的复杂性是为什么Swift不支持结构继承?
struct
s为值类型- 值类型是堆栈帧之间复制
- 继承将意味着一个
struct
的大小可以变化(例如,如果从Vehicle
Lorry
继承和Lorry
添加然后Lorry
需要比Vehicle
更多空间) - 具有值类型参数s的未在编译时已知会呼叫者和复杂堆栈帧结构大小访问数据为被叫
我认为,这是因为这些并发症,这大概会增加额外的操作,每一个的函数调用涉及struct
并因此降低性能,Swift不允许struct
继承。这个推理是否正确?
但是,然后我尽管关于C++。 C++确实允许struct
继承,并且C++非常注重性能。这让我觉得我的推理不允许struct
继承是错误的。 C++如何实现struct
继承而不会对性能产生负面影响?