看不懂一个运算符重载的语句

bourbaki 2003-05-09 05:36:13
我碰到这样一个定义:
struct Url
{
int ODid;
SFString urlValue;

Url (int nODid = -1) : ODid (nODid) {}
operator int () const {return ODid;}
Url &operator = (const Url &url)
{
ODid = url.ODid;
urlValue = url.urlValue;
return *this;
}
operator SFString () const { return urlValue; }
bool operator == (const Url &url) const
{
return ODid == url.ODid && urlValue == url.urlValue;
}
bool operator != (const Url &url) const {return !(*this == url);}
}
其中SFString是一个类。
我不明白诸如这样的语句是什么意思:
operator int () const {return ODid;}
operator SFString () const { return urlValue; }
...全文
35 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是强制转换
tuxw 2003-05-09
  • 打赏
  • 举报
回复
这里重载的不是(),而强制类型转换
bourbaki 2003-05-09
  • 打赏
  • 举报
回复
谢谢众家兄弟
rushman 2003-05-09
  • 打赏
  • 举报
回复
--operator int () const {return ODid;}
~~~~~此处const表示此函数不修改对象的内容,静态对象也可调用此成员函数
比如:
void func(const Url & url)
{
int i = int(rul);//rul.operator int(),非const函数此时不能调用。
...
}
Peterwby 2003-05-09
  • 打赏
  • 举报
回复
这是自动类型转换,本来int i= X ,这个X要求也是int类型才对嘛,但是如果X是用户自定义类型的话,就要在 定义中加入运算符重载,对编译器说,把这个X当作int 来看,运算符重载用在类型转换的时候没有返回值, operator后面跟的是 想要转换到的那个类型。基本上大概是这个样子吧?我也不是很清楚,不过应该不会跟我说的差太多 嘿嘿
shishiXP 2003-05-09
  • 打赏
  • 举报
回复
好!!!!!!!!
fangrk 2003-05-09
  • 打赏
  • 举报
回复
Url U1;
...
int i=U1;//调用operator int () const
SFString str=U1;//operator SFString () const
blue_coco 2003-05-09
  • 打赏
  • 举报
回复
对操作符()重载。

69,373

社区成员

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

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