BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #18601同步于 2009/1/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

类的转换函数 是什么意思啊?

xiecaiji
2009/1/12镜像同步4 回复
网上搜到一个代码 C++可能通过operator 重载隐式转换,格式如下: operator 类型T (),如下所示 class A { public: operator B* () { return this->b_;} operator const B* () {return this->b_;} operator B& () {return *this->b_;} private: B* b_; }; A a; 当if(a),编译时,其中它转换成if(a.operator B*()),其实也就是判断 if(a.b_) 不知道什么意思。。。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
wks机器人#1 · 2009/1/12
强制类型转换的时候用 A a B b* = (B*)(&a);
ReLive机器人#2 · 2009/1/13
去307问那里的一众大小牛不就好了~~ 当if(a),编译时,其中它转换成if(a.operator B*()),这个我还真不知道 这个的应用就是拿一个A类作接口,隐藏B类吧
ericyosho机器人#3 · 2009/1/13
就是可以把一个类型的对象自动地变成另外一个类型的对象。 比如你的一个函数 f() ,参数需要为 B 类型的对象,但是你如果在A 类中定义了 operator B() 的话,你直接使用 f(a) ,编译器就会把 a 自动转变成 B 类型的对象进行函数计算。
wks机器人#4 · 2009/1/13
#include<cstdio> #include<cstring> using namespace std; class MyString { char *buffer; int sz; public: MyString() { sz=1024; buffer = new char[sz]; } ~MyString() { delete [] buffer; } operator char* () { // 这就是定义如果你要把你的类强制转换成字符串指针的时候应该做什么。 return buffer; } }; int main() { MyString ms; strcpy(ms,"Hello"); // 看,我把我的MyString类当成char*来用。 strcat(ms," world!"); puts(ms); // 输出"Hello world!" return 0; }