从c++到Objective-C

1. 头文件依然是.h

2. .cpp变成了.m

3. #import代替了#include,#import保证只会引用一次,相当于.h里的#ifndef #define #endif模式

4. 用@interface … @end来声明类,取代class ClassName{}

5. 用@implementation … @end来实现类

6. Data Members放在@interface ClassName : Parent{ … }中,默认权限为@protected,在ObjC里称为Instance Variables

7. Member Functions放在@interface ClassName: Parent{} … @end中,在ObjC里称为Instance Methods

8. Instance Methods的声明方式为:scope (returnType) methodName: (parameter1Type) parameter1Name;

9. scope分instance和class两种,分别用-和+表示

10. 调用method的方式是[object method],相当于object->method()

11. 带参数调用method的方式是[object method: parameter]

12. 没有Object,只有Pointer to Object

13. 通常的构造方式: Object * obj = [[Object alloc] init]

14. 析构的方式:[obj release]15.多参数method的声明方式: scope (returnType) methodName: (parameter1Type) parameter1Name label1Name: (parameter2Type) parameter2Name … ;

16. labelName不是必须的

17. 这种特别的语法源自SmallTalk

18. private: [list of vars] protected: [list of vars] public: [list of vars] 改成了@private, @protected, @public

19. Class Variable用static的方法实现⋯⋯

20. +(void) initialize 会在构造的时候被调用

21. ObjC通常用@符号表示语言的衍生部分

22. ObjC用id来表示范型对象的指针

23. 支持动态类型识别

24. Categories机制可用于不继承已有class的前提下加入新功能

25. Posing机制允许Child取代Parent

26. Protocol相当于pure virtual class

27. ObjC由两种内存管理的方法,1) retain and release,2) retain and release/autorelease

28. Foundation相当于STL,NSArray对应vector,NSDictionary对应map

29. ObjC不支持Namespace

30. 不支持重载