首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++的一个BUG(语言的),该怎么解决

2012-03-09 
C++的一个BUG(语言的)sizeof(uint64&)在C++下的值是8,但是,在参数传递方面它等同于uint64*,只不过uint64&

C++的一个BUG(语言的)
sizeof(uint64&)在C++下的值是8,但是,在参数传递方面它等同于uint64*,只不过uint64&在语法检查上不允许传0值,在生成的代码上function(uint64& u)和funciotn(uint64* u)其实是相同的。所以sizeof(uint64&)其实就是sizeof(uint64*)。

[解决办法]
sizeof(T&)!=sizeof(T*)绝对不是个bug,这正是引用的精髓,是C++中引用存在的意义
如果不能理解sizeof(T&)!=sizeof(T*)就永远不能理解引用
知道底层的实现机制固然是好的,但不要死在底层,底层实现相同的东西为什么会存在两个你想过没用,就是因为在高层他们看起来是不同的,正因为sizeof(T&)!=sizeof(T*),所以才能在高层上实现指针与引用的差异,在高层上,指针与引用没有任何关系,根本不用管底层,C++中引用的精髓就在于sizeof(T&)==sizeof(T)
如果sizeof(T&)!=sizeof(T),这才是C++的BUG,而sizeof(T&)!=sizeof(T*)根本就是天经地义的

热点排行