在最近的一位開發者遇到了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
繼承而不會對性能產生負面影響?