C++中与Objective C的“@class MyClassName”等效的是什么?

3
在我的Objective-C类的头文件中,我使用@class MyClassName来定义一个类并使用MyClassName对象。
在Objective-C中,@class MyClassName#import MyClassName.h有什么区别吗?
在C++中是否存在这样的区别?
C++中#import "MyClassName.h"的等效语句为#include "MyClassName.h"
Objective-C中@class MyClassName的C++等效语句是什么?
3个回答

8
在C++中,前置声明看起来很相似 - 只需从Objective-C变体中删除“@”:
class MyClassName;

1

是的,在C++中也有这样的区别。在C++中,它被称为前向声明。你可以像这样前向声明一个类:

class ClassName;

只是为了补充额外的信息,当您在声明之前使用类时,可以使用前向声明。编译器会有点宽容,不会抛出错误,但仍需要稍后提供完整的类声明。

1

C++中等价于#import "MyClassName.h"的语句并不是#include "MyClassName.h"

"#import"还可以防止C++中通常需要使用的文件循环包含问题。

#ifdef __abc.h__
#define __abc.h__

//actual code


#endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接