郭炜老师014 MyString(一直是runtime error)

因为想试着用类型转换运算符,即为了使cout<<s1;//(s1是MyString类)能通过,使用了operator char*(){return p;},希望届时输出的就是成员变量字符串p,虽然dev c++运行完全没有问题,但是openjudge一直显示runtime error。

MyString(const MyString & s) {
		if( s.p) {
			p = new char[strlen(s.p) + 1];
			strcpy(p,s.p);
		}
		else
			p = NULL;

	}
	void Copy(const char * s){ 
		if(p) delete [] p;
		if( s) {
			p = new char[strlen(s) + 1];
			strcpy(p,s);
		}
		else
			p = NULL;

	}
	
	MyString & operator= (const char * s) {
		if(p) delete [] p;
		if( s) {
			p = new char[strlen(s) + 1];
			strcpy(p,s);
		}
		else
			p = NULL;

	}
	MyString & operator= (const MyString & s) {
		if(p) delete [] p;
		if( s.p) {
			p = new char[strlen(s.p) + 1];
			strcpy(p,s.p);
		}
		else
			p = NULL;
		return *this;
	}
	operator char* () {return p;}

所以最终还是用了重载输入输出流运算符,不过仍然想不明白之前那样为什么是错的呢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值