|
|
有时,某个对象必须被转换成内建的类型(比如:作为参数传到 strcmp() 这样的 C 函数的字符串对象):
//file Mystring.h
class Mystring {
char *s;
int size;
public:
Mystring(const char *);
Mystring();
//...
};
#include //C 字符串处理函数
#include Mystring.h
void main() {
Mystring str(hello world);
int n = strcmp(str, Hello); //编译错误 str 不是常量字符串( const char *)
} //end main()
C++ 为这种类提供自动的类型转换。你只要在类定义中声明一个转换操作符即可:
class Mystring { // 具备转换操作符的类
char *s;
int size;
public:
Mystring(const char *);
Mystring();
operator const char * () { return s; } //转换操作符
//...
};
这样一来便万事大吉:
int n = strcmp(str, Hello); //现在好了, str 将自动转换成 const char *。
要点:转换操作符不同于普通的重载操作符,它不能返回值(即便是 void)并且不能有参数。 |
|