#include <iostream>
using namespace std;
class mstring
{
public:
mstring(const char* str)
{
length = strlen(str);
m_char = new char(length + 1);
strcpy_s(m_char, length + 1, const_cast<char*>(str));
}
friend ostream& operator<<(ostream& out,const mstring& str)
{
if (NULL != str.m_char)
{
out << str.m_char;
return out;
}
}
~mstring()
{
if (m_char != NULL)
{
delete m_char;
length = 0;
}
}
char* m_char;
int length;
};
int main()
{
mstring* mstr = new mstring("Hello World!");
cout << mstr;
return 0;
}`
为什么内存会出错???
首先你创建的mstr没释放,new后面没delete
其次友元函数里面没有覆盖,if要是没进去返回什么呀?
还有就是楼上的 new char() -> new char[]