2010-06-01 110 views

回答

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的一部分。

相关问题