operator float() const { return f;}什么意思?(在线等)

dajian2000 2002-05-29 05:35:45
<thinking c++> 15.3.3:
#include <assert.h>
#include <iostream.h>

template<class T,int size = 100>
class mblock{
T array[size];
public:
T& operator[](int index){
assert(index >= 0 && index < size);
return array[index];
}
};

class number{
float f;
public:
number (float F = 0.0f) : f(F) {}
number& operator=(const number& n) {
f = n.f;
return *this; //返回的是什么?(*this )是什么?
}
operator float() const { return f;}//这行看不懂!什么意思?
friend ostream&
operator<<(ostream& os, const number& x) {
return os << x.f;
}
};

template<class T, int sz = 20 >
class holder{
mblock<T, sz> *np;
public:
holder() : np(0) {}
number& operator[](int i){
assert( i >= 0 && i < sz) ;
if( !np ) np= new mblock<T,sz>;
return np->operator[](i);
}
};

main(){
holder<number,20> H;
for(int i = 0; i< 20; i++)
H[i] = i;

for(int j =0 ; j< 20 ;j++)
cout<< H[j] << endl;
}

以上两个问题解决就给分!谢!
...全文
1612 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bookwormc 2002-05-29
  • 打赏
  • 举报
回复
it is an operator for type-conversion.
just like:

int j=11;
float kk;
kk=float(j);
boxban 2002-05-29
  • 打赏
  • 举报
回复
operator float() const { return f;}
等价于
//.h
inline operator float() const;

//.cpp
inline number::operator float() const
{
return f;
}

这里的`const`用来修饰这个函数,表明这个函数不会改变所属类数据成员得值。
如果你把 `return f;` 改做
`return (f = f + 1.0);`
必然出现编译错误
mylove0618 2002-05-29
  • 打赏
  • 举报
回复
this是一个指向调用对象的指针,所以*this就是调用函数的对象本身。
mylove0618 2002-05-29
  • 打赏
  • 举报
回复
类型转换运算。可以和运算符重载比较着学习。
dajian2000 2002-05-29
  • 打赏
  • 举报
回复
operator float() const { return f;}//还是不懂!继续讨论!
zhengyunpeng() sunyata() 的说法好像有问题!
Sunyata 2002-05-29
  • 打赏
  • 举报
回复
To zhengyunpeng():

i guess what u said should be implemented this way:

float operator()() { return f; }
zhengyunpeng 2002-05-29
  • 打赏
  • 举报
回复
*this 就是指对象本身。
operator float() const { return f;}的含义是操作符()运算返回一个float型的值,该值是f
TempTask 2002-05-29
  • 打赏
  • 举报
回复
在Class中有一个this指针指向对象本身;
如 Class p;

p.this实际上就是&p

则在上面返回*this实际上是Number结构本身
Sunyata 2002-05-29
  • 打赏
  • 举报
回复
support implicit conversion from class member to float

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧