use*_*739 0 c++ const operator-overloading
我想我会通过查看最近发布的Doom 3源代码来尝试增强我的C++和OpenGL.到目前为止学到的很多,但我已经碰壁了.这里详述的课程有方法
float  operator[] (int index) const  
和
float &  operator[] (int index) 
他们的身体都读了
return ( &x )[ index ];
where x是一个类'两个数据成员(另一个是y;这个类是2向量).
虽然我可以理解每个版本的标题/原型的语法,但我不明白为什么它们都存在.
const似乎出现(或不出现,作为首选)只是为了充分区分标题以允许编译.(也就是说,删除const和VS2010拒绝编译,类似的,如果两个标题结束const.)
为什么要将ref返回浮动?这个类中没有其他七种浮点型方法可以做到这一点,所以我猜测效率不是一个因素(因为这个运算符可能比其他运算符更频繁地被称为).
欣赏有关这里发生的事情的任何见解......
这是一种常见的习语(称为"const重载").请参阅C++ FAQ:http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.12.
歧义是由是否解决*this是const或不是.在const对象上,const调用重载,在这种情况下,它以只读样式运行.在非const对象上,非const被调用,在这种情况下,它以读/写方式起作用.
注意,至关重要的是,这不是区分读写访问的方法.
| 归档时间: | 
 | 
| 查看次数: | 274 次 | 
| 最近记录: |