读书人

自定义字符串类MyStr解决方法

发布时间: 2012-04-17 15:06:33 作者: rapoo

自定义字符串类MyStr
以下是我自己编写的一个字符串类MyStr,不知这样写是否有不妥之处,求大侠们给指点,学习了!
[code=C/C++][/code]
#include "stdafx.h"
#include <iostream>
using namespace std;
class MyStr
{
friend ostream & operator<<(ostream & out,MyStr & mystr);
public:
MyStr(char *mystr=NULL):str(mystr){}
MyStr(const MyStr & mystr){str=mystr.str;}
MyStr& operator =(const MyStr &rhs)
{
if (this!=&rhs)
{
str=rhs.str;
}
return *this;
}
~MyStr(){}
private:
char * str;

};
ostream & operator<<(ostream & out,MyStr & mystr)
{
out<<mystr.str;
return out;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *pstr="123456";
//MyStr defstr(pstr);

/*MyStr defstr;
defstr=pstr;*/

MyStr defstr("123");

cout<<defstr<<endl;

system("pause");
return 0;
}


[解决办法]
MyStr(char *mystr=NULL):str(mystr){}
MyStr(const MyStr & mystr){str=mystr.str;}
MyStr& operator =(const MyStr &rhs)
{
if (this!=&rhs)
{
str=rhs.str;
}
return *this;
}

这三个函数的实现都需要深拷贝,而不是简单的指针赋值。
[解决办法]

探讨
问三楼,既然这是浅拷贝,程序为啥不会出错,按理浅拷贝对象被析构两次会出错的?

读书人网 >C++

热点推荐