我在CGPath.h头文件中找到了这个。我很好奇这个常量是什么?我的猜测是:如果我把const定义为const,那么它是不变的,所以不可变,不能以任何方式改变。那有意义吗?typedef const struct * CGPath和typedef struct * CGPath有什么区别?
0
A
回答
3
是的const
意味着你不能在外部改变路径。
对于基于的CoreFoundation的库虽然,const
更是一个黑客,使可变对象使用一成不变的方法,而铸造,并不反之亦然。这意味着
CGMutablePathRef mpath;
...
CGPathContainsPoint(mpath, ...);
编译罚款,因为Foo*
可以隐式转换为const Foo*
,但
CGPathRef path;
...
CGPathAddRect(path, ...);
将抛出一个错误,因为const Foo*
不能安全地转换为Foo*
。
1
“以任何方式”可能是夸大其词,但你是正确的。你会注意到一个是CGPathRef,另一个是CG Mutable PathRef。
2
const T*
表示该类型是一个指针,并且该指针不能通过该指针进行更改。 (这并不一定意味着指针对象永远不会改变;例如,它可能会被不同的非const
引用所修改)
1
const来自标准C.这意味着解除引用的指针不能被分配到。所以,我不能这样做:
GCPathRef p = &my_path;
*p = new_path; // generates compiler error
但需要注意的p本身可以改变:
p = &another_path; // this is OK.
这是不是黑客攻击都作为另一个海报已建议。几代人一直是C的一部分。
相关问题
- 1. `typedef struct X {}`和`typedef struct {} X`有什么区别?
- 2. bool operator == typedef struct
- 3. 'struct X typedef`与`typedef struct X`是什么意思?
- 4. typedef struct error:expected a';'
- 5. const struct {x} vs struct {const x}
- 6. C:typedef struct name {...}; VS typedef struct {...}名称;
- 7. typedef struct node * NODE表示什么?
- 8. C++:typedef struct {......} * node是什么意思?
- 9. C和C++中的struct和typedef
- 10. 语法的:typedef和struct标签说明
- 11. typedef struct用于定义
- 12. 'const struct'与'struct'有什么不同?
- 13. typedef和using之间有什么区别?
- 14. @type和@typedef有什么区别?
- 15. typedef和宏之间有什么区别?
- 16. `alias`和`typedef`有什么区别?
- 17. typedef和enum有什么区别
- 18. 我们可以使用typedef struct node node;
- 19. typedef char [4] A和typedef char(&A)[4]之间有什么区别?
- 20. const C Struct数组struct struct数组
- 21. struct和dict有什么区别?
- 22. struct node和struct node *之间的' - >'有什么区别?
- 23. struct node * head和struct node ** head有什么区别?
- 24. 为什么编译器不能区分typedef和non-typedef?
- 25. struct typedef中的声明规则
- 26. “struct node * temp”和“struct node *&temp”之间的区别是什么?
- 27. Go中的new(Struct)和&Struct {}之间的区别是什么?
- 28. 期望'struct matrix_t *',但参数的类型是'struct matrix_t *'?_?没有什么区别
- 29. 在typedef中定义结构struct
- 30. 另一个typedef中的typedef结构格式struct