gpt4 book ai didi

c++ - 实现文件中的实例变量——私有(private)与 protected

转载 作者:行者123 更新时间:2023-11-30 04:29:13 26 4
gpt4 key购买 nike

在 Objective-C 中,将实例变量放入 .h 文件与将其放入 .m 文件之间的实际区别是什么?最终结果有什么不同吗?什么特殊机制允许这样做?为什么这在 Objective-C 中是可能的,而不是在 C++ 中?

如果我采用将实例变量放在.m 文件中的样式,这只适用于私有(private)实例变量,对吧?我应该始终将 protected 实例变量放在 .h 文件中,这样它们就可以被子类正确继承,对吧?或者有没有办法让 .m 文件中 protected ivars 以某种方式被继承?

最佳答案

将额外的实例变量放入 class extensions在 Clang/LLVM 2.0 之前是不可能的。 Objective C 编译器根据 header 和类扩展中的定义“组装”类的 ivar,到达最终布局。

类扩展是 Objective-C 的一项相对较新的语言特性,因此它在其他语言(如 C++)中的缺席也就不足为奇了。然而,其他语言(例如 C#)可能会使用分部类实现类似的功能。

你对第二部分是正确的:只有私有(private)实例变量和属性适合在类扩展中使用; protected 和 public 实例变量应该在 .h 文件中。

关于c++ - 实现文件中的实例变量——私有(private)与 protected ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com