c++类构造函数

operator char* (){
return p;
}
像是构造函数 , 但是构造函数似乎不该这么些啊
书上说是这是char*转换函数
不明白为什么 哪个高手解释下啊

类的转换函数,形式如下
class A
{
operator Type();
}

意思是将类 A 的对象转换为 Type 类型
这个函数没有参数,没有返回值,因为:
函数参数不需要,就是对象自己
函数返回值不需要,就是函数名
举个实例,直接编译运行一下,你应该不会再有疑问了:

#include <iostream>
using namespace std;

class A
{
public:
A(char* str):strName(str){}
operator char*()
{
cout << "转换函数被调用了" << endl;
return strName;
}
private:
char* strName;
int i;
};

void f(char* str)
{
cout << str << endl;;
}

int main(int argc, char *argv[])
{
A a("Hello World!");
f(a);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-12
不是构造函数,意思就是说这个类的对象可以当作 char* 来使用,举个例之:

CA 是你定义的类,它有这样一个函数operator char* (){
……
}

然后:
char* p = NULL;
CA a;
p = a;
这样是可以编译通过的,因为把a认作一个char*类型。
第2个回答  2009-02-12
这个是转换函数 用于将类类型转换为其他类型;
如类中定义的有一个operator double();
你就可以将类对象赋给一个double量:
double t=类对象;
经编译时编译器发现:右边的是类类型,左边的是double,它将查找你是否定义了与之相同
的转换函数(如果没有将报错);

注:
1.转换函数必须是类方法;
2.转换函数不能指定返回类型;
3.转换函数不能有参数;
第3个回答  2009-02-12
构造函数是一个与类名同名的函数,是用来初始化类的成员变量的函数。这样可以避免没有设定值时成员变量仍然能够运行正常。这个不是构造函数。
第4个回答  2009-02-12
这是char*转换函数,就是说如果你的类里面有了这个函数,就说可以用你的类直接赋值给char对象
相似回答