<1>
//a.h
#pragma once
class MyString
{
public:
MyString(const char* pszText);
MyString(const MyString& strText);
MyString& operator=(const MyString& strText);
MyString& operator=(const char* pszText);
operator const char*();
~MyString();
protected:
int m_len;
char* m_data;
};
<2>
#include "stdafx.h"
MyString::MyString(const char* pszText):m_len(0),m_data(NULL)
{
m_len = strlen(pszText);
m_data = new char[m_len+1];
strcpy(m_data,pszText);
}
MyString::MyString(const MyString& strText):m_len(0),m_data(NULL)
{
*this = strText;
}
MyString::~MyString()
{
if (m_data!=NULL)
{
delete[] m_data;
m_data = NULL;
}
m_len = 0;
}
MyString& MyString::operator=(const MyString& strText)
{
if (this==&strText)
{
return *this;
}
m_len = strText.m_len;
if (m_data!=NULL)
{
delete[] m_data;
}
m_data = new char[m_len+1];
strcpy(m_data,strText.m_data);
return *this;
}
MyString& MyString::operator=(const char* pszText)
{
if (m_data!=NULL)
{
delete[] m_data;
}
m_len = strlen(pszText);
m_data = new char[m_len+1];
strcpy(m_data,pszText);
return *this;
}
MyString::operator const char*()
{
return const_cast<const char*>(m_data);
}
<3>
#include "stdafx.h"
int main()
{
MyString str("abc");
MyString str1(str);
str1 = str1;
printf("%s \r\n",(const char*)str);
system("pause");
return 0;
}