首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于运算符的重载operator char*( ),该如何解决

2012-02-16 
关于运算符的重载operator char*( )维护的程序有如下代码片段:-----------------------------------------

关于运算符的重载operator char*( )
维护的程序有如下代码片段:
--------------------------------------------
class   CString
{
    protected:
std::string   std;
    public:
    ....
operator   LPCTSTR(   )   const   ;
operator   char*(   );
operator   const   char*(   );
operator   const   void*(   );
....
}

CString::operator   LPCTSTR(   )   const  
{  
return   (char   *)std.c_str();  
}

CString::operator   char*(   )
{  
return   (char   *)std.c_str();  
}
--------------------------------------------

1)   请问char*   这样的东西也能重载?不是说重载运算符只能对已有的运算符才能重载吗?怎么也能对LPCTSTR重载??
2)   我这样重载了,我如何在外边的程序里调用LPCSTR,char*   ???   给两个例子

[解决办法]
C++ Primer 3e 15.9 P633
[解决办法]
这个不是重载, 这是一个转换符, 当你的class与一个char*类型的运算时, 它隐式转换成一个chai*, 往往就是返回它的char*成员吧.
[解决办法]
类型转换.
[解决办法]
隐式类型转换而已

比如

class RangeInt
{
int data_;
public:
operator int(){ return data_; }
};

这个例子够浅显了吧
就是实现一种转化,在需要用到int的地方,也可以传RangeInt过去
[解决办法]
void fun(int i);

RangeInt ri;
fun(ri); //ok,这里用到了隐式转换
[解决办法]
调用如下
CString str;
//初始化str


char* pstr = char*(str);

热点排行