class B中定义的operator A() const是啥意思

smallhappiness 2011-03-13 07:56:40
class B; // 对类B提前声明
//
class A {
public:
A(const B&); // 可以从B构造而来的类A
};

class B {
public:
operator A() const; // 可以从A转换而来的类B
};

。。。。。。。
void f(const A&);

B b;

f(b); // 错误!——二义

我想问的是:class B中那个operator A() const是咋解读的呀。书上说是类B里自定义的一个转换运算符,将b转换成A的一个对象。有人帮我看下operator A() const这个是啥具体意思吗?写个调用的一句出来看看。看不到懂这个。谢谢
...全文
384 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
justkwy 2011-03-13
  • 打赏
  • 举报
回复
好吧,算我没说,不误导人了....
justkwy 2011-03-13
  • 打赏
  • 举报
回复
operator 是运算符重载的意思 A这个字符原来是类的名字经过重载后就有了别的意义
smallhappiness 2011-03-13
  • 打赏
  • 举报
回复
哦,明白了,谢谢大家。
这个是转换操作符,一种特殊的类成员函数。
class B
{
operator A()const
...
}
意思是B可以转换为A。譬如a=b
或者fun(A a)
,则可以把B的实例b传给fun,b就可以转成a了。
smallhappiness 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arong1234 的回复:]
这里没有()重载

引用 4 楼 pathuang68 的回复:
先了解“()”的重载是怎么回事(函数对象or仿函数)
[/Quote]
谢谢。还是没理解了。
譬如:
bool operator<(const test &t1) const{
return (v < t1.v);
}

我知道是比较test类的两个实例的大小。test t,t1
那么t<t1就可以按这个计算了。
那那个operator A()是咋看成a=b转换的呢??谢谢
qq120848369 2011-03-13
  • 打赏
  • 举报
回复
就是二义了呗。
arong1234 2011-03-13
  • 打赏
  • 举报
回复
这里没有()重载[Quote=引用 4 楼 pathuang68 的回复:]
先了解“()”的重载是怎么回事(函数对象or仿函数)
[/Quote]
pathuang68 2011-03-13
  • 打赏
  • 举报
回复
先了解“()”的重载是怎么回事(函数对象or仿函数)
愤怒的熊猫007 2011-03-13
  • 打赏
  • 举报
回复
强制类型转换~
arong1234 2011-03-13
  • 打赏
  • 举报
回复
不知道你所谓的“具体”是啥意思,类型转换不就是

B b;

A a;
a =b;b被转换为A

void fun(A a)
{
}

fun(b);//b被转换为A

[Quote=引用 1 楼 arong1234 的回复:]
你后面注释不是说了没?B可以隐式转换为A,而转换时就调用这个函数
[/Quote]
arong1234 2011-03-13
  • 打赏
  • 举报
回复
你后面注释不是说了没?B可以隐式转换为A,而转换时就调用这个函数

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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