我正在研究一些C ++ / CLI,并且好奇为什么有引用句柄而不是“重载指针”。通过“重载指针”,我指的是使用* C指针编译器推断出与C ++指针不同的*指针表示法。
例如,在标准主标题中:
int main(array<System::String ^>^ args)
我知道^尾随右尖括号的原因,如MSDN上所述。
我知道String是一个.NET对象类型,因此是一个引用,但我习惯于Objective-C,其中对象的引用采用标准指针表示法:
NSString * string = ... etc.
谢谢,
斯科特
答案 0 :(得分:4)
因为从技术上讲,引用和指针是不同的。引用是不透明的指针,由运行时管理;指针是无法验证的,由程序员管理。对两者使用相同的语法可能是可能的,但可能会产生很多混乱和潜在的错误。
答案 1 :(得分:0)
@Ben Voigt:系统在什么情况下可以根据类型解析setter?就个人而言,我认为没有理由它不应该(恕我直言,应该允许有一个属性为“foo”的属性为“复杂”的getter,一个类型为“Double”的setter,另一个类型为“Complex”的setter ;当然可以有一个setter方法的多个覆盖,但我知道属性没有这样的特性。)