C ++:是否必须在.h文件中声明所有函数和ivars?

时间:2012-07-17 05:08:44

标签: c++ objective-c

我正在从C迁移到Obj-C到Obj-C ++。我将在下学期学习C ++课程。希望我能轻松一点。

所以在Obj-C中,私有和公共是由您在头文件中声明的任何内容决定的。在@interface文件的.h范围内,您可以在该类中调用所有可以在该类上调用的属性和实例/类方法。从我可以假设的C ++,我觉得公共和私有事实上都是在.h文件中写的:ivars,函数,你有什么。我在这个假设中是对的吗?

2 个答案:

答案 0 :(得分:2)

使用早期的Objective-C编译器,类的@interface(通常在头文件中声明,.h)必须包含所有数据成员(“ivars”)。使用较新的LLVM编译器,可以在@implementation.m文件)中列出它们。

Objective-C类的其他部分不受此限制。可以在.h.m,两者或两者都声明或定义方法!标头通常描述最重要的方法,省略特定于实现的内容。 Categories (语言的一个特性)是一种向类添加新方法的方法,同时在其他地方声明和定义它们。还有各种方法可以使用NSObject和Objective-C运行时来做几乎你能想到的任何事情,例如:在运行时决定一个类是否有方法,或添加方法等。

答案 1 :(得分:1)

不,你可以拥有公共和私人不在各种.h文件中。不确定obj-c / c ++,但是如果你确实选择将它们放在in.h文件中(首选更大的程序),你需要#include .h文件。