类可以通过重载实现类型的自动转换,可类的指针怎么办?
时间:2011-12-07
来源:互联网
C/C++ code
class Woo{ private: char mm; public: Woo(char a){mm = a;} Woo() {mm=0;}; }; void main() { Woo a; a = 'u'; // 正常 Woo b[10]; ::strcpy(b, "oopp"); // 这里b怎么自动转换为char *呢? }
作者: hyslam 发布时间: 2011-12-07
重载 char *操作符
#include <iostream>
using namespace std;
class Woo{
private:
char mm;
char *str;
int iflag;// 0 -- mm;1--str;
public:
Woo(char a){ cout<<"ok"<<endl;mm = a; iflag = 0;str = NULL;}
Woo(char * a)
{
cout<<"ok1"<<a<<endl;
if ( a )
{
str = new char[strlen(a) + 1];
strcpy(str,a);
iflag = 1;
}
else
str = NULL;
}
Woo() {mm=0; iflag = 0;str = NULL;};
Woo &operator=(Woo &w)
{
if ( &w != this && iflag ==0)
{
mm = w.mm;
}
else if( &w != this && iflag ==1 )
{
if ( str )
delete []str;
str = new char[strlen(w.str) + 1];
strcpy(str,w.str);
}
return *this;
}
operator char *() const
{
return str;
}
~Woo() {if ( str ) delete [] str;}
};
void main()
{
Woo a;
a = Woo('u'); // 正常
Woo b("");
b = Woo("ppppppppppp");
// Woo b[10];
::strcpy(b, "oopp"); // 这里b怎么自动转换为char *呢?
}
#include <iostream>
using namespace std;
class Woo{
private:
char mm;
char *str;
int iflag;// 0 -- mm;1--str;
public:
Woo(char a){ cout<<"ok"<<endl;mm = a; iflag = 0;str = NULL;}
Woo(char * a)
{
cout<<"ok1"<<a<<endl;
if ( a )
{
str = new char[strlen(a) + 1];
strcpy(str,a);
iflag = 1;
}
else
str = NULL;
}
Woo() {mm=0; iflag = 0;str = NULL;};
Woo &operator=(Woo &w)
{
if ( &w != this && iflag ==0)
{
mm = w.mm;
}
else if( &w != this && iflag ==1 )
{
if ( str )
delete []str;
str = new char[strlen(w.str) + 1];
strcpy(str,w.str);
}
return *this;
}
operator char *() const
{
return str;
}
~Woo() {if ( str ) delete [] str;}
};
void main()
{
Woo a;
a = Woo('u'); // 正常
Woo b("");
b = Woo("ppppppppppp");
// Woo b[10];
::strcpy(b, "oopp"); // 这里b怎么自动转换为char *呢?
}
作者: gameslq 发布时间: 2011-12-07
我想问的是不在Woo类里new的情况下,怎么实现
Woo里面只有1个字节char的元素,目的只是代替char自动初始化为'\0'
也是变象的自动初始化char,但这个类却不能转成char *...
Woo里面只有1个字节char的元素,目的只是代替char自动初始化为'\0'
也是变象的自动初始化char,但这个类却不能转成char *...
作者: hyslam 发布时间: 2011-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28