C++ 实现文件中的实例变量— ;私人与受保护

C++ 实现文件中的实例变量— ;私人与受保护,c++,objective-c,C++,Objective C,在Objective-C中,将实例变量放入.h文件与放入.m文件之间的实际区别是什么?最终结果有什么不同吗?有什么特别的机制可以做到这一点?这怎么可能在ObjuleC中,而不是在C++中? 如果我采用将实例变量放入.m文件的方式,那么这只适用于私有实例变量,对吗?我应该始终将受保护的实例变量放在.h文件中,这样子类就可以正确地继承它们,对吗?或者有没有一种方法可以让.m文件中受保护的IVAR以某种方式被继承?在使用Clang/LLVM 2.0之前,无法将其他实例变量放入。Objective C编

在Objective-C中,将实例变量放入
.h
文件与放入
.m
文件之间的实际区别是什么?最终结果有什么不同吗?有什么特别的机制可以做到这一点?这怎么可能在ObjuleC中,而不是在C++中?
如果我采用将实例变量放入
.m
文件的方式,那么这只适用于私有实例变量,对吗?我应该始终将受保护的实例变量放在
.h
文件中,这样子类就可以正确地继承它们,对吗?或者有没有一种方法可以让
.m
文件中受保护的IVAR以某种方式被继承?

在使用Clang/LLVM 2.0之前,无法将其他实例变量放入。Objective C编译器根据标头和类扩展中的定义“组装”类的IVAR,从而得到最终布局

类扩展是Objtovi-C的一个相对较新的语言特征,因此它在其他语言中的缺省,例如C++,应该不会令人惊讶。然而,其他语言,如C#,可能会实现与分部类类似的特性

关于第二部分,您是正确的:只有私有实例变量和属性适合在类扩展中使用;受保护的,当然还有公共实例变量应该在.h文件中