【发布时间】:2014-08-07 07:36:06
【问题描述】:
我一直在查看源代码,试图了解有关 C++ 的更多信息,但遇到了一些看起来令人困惑的代码。我无法通过玩弄它来弄清楚它的用途。
请谁能解释一下操作符 float *() 的作用以及它是如何使用的?
类向量 { 民众: 浮动 x,y,z; Vector() : x(0), y(0), z(0){
}
Vector( float x, float y, float z ) : x(x), y(y), z(z){
}
operator float*(){
return &x;
}
operator const float *(){
return &x;
}
我已经搜索过 StackOverflow,它看起来像是一个转换运算符,但我仍然不确定它的实际作用以及它为什么有用。
亲切的问候,
【问题讨论】:
-
到目前为止,没有一个答案可以解释为什么它转换为
float*而不是float。非常量可能是故意破坏封装的愿望,但为什么有人会写const float *转换? ---> 啊哈,刚刚看到马特关于假设 x,y,z 在内存中是连续的这一点的评论。好的,可疑的设计,但我现在明白了:-) -
@Darren 我不会试图解释它,因为我不能。这简直是个坏主意。我怀疑原作者想为向量公开一个类似数组的接口,但这是一个坏主意,因为我的答案(以及更多)下面的 cmets 中提到的原因。
标签: c++ class operator-overloading overloading conversion-operator