C++:所有函数和ivar都必须在.h文件中声明

C++: Do all functions and ivars have to be declared in the .h file?

本文关键字:文件 声明 函数 ivar C++      更新时间:2023-10-16

我正在从C到Obj-C迁移到Obj-C++。下学期我将选修C++课程。希望我能轻松通过。

因此,在Obj-C中,private和public由您在头文件中声明的内容决定。在.h文件的@interface中,您可以在该类上调用的所有属性和实例/类方法都已为您布局。从我对C++的假设来看,我觉得公共和私有实际上都写在.h文件中:ivars,函数,你有什么。我的假设是对的吗?

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

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

不,您可以在不同的.h文件中拥有public和private。不确定obj-c/c++,但如果你选择将它们放在.h文件中(在更大的程序中首选),你需要#包括.h文件。