天下

记录修行的印记

备忘,MyString实现

<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;
}


posted on 2012-09-11 10:43 天下 阅读(296) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(4)

随笔分类(377)

随笔档案(327)

链接

最新随笔

搜索

最新评论