重写string 类的构造函数和析构函数
来源:互联网 发布:排版印刷软件 编辑:程序博客网 时间:2024/06/07 03:52
#include <iostream>
#include <assert.h>
#include <string.h>
using namespace std;
class String
{
public:
String(const char * tmp = NULL); //构造函数
String(const String &object); //拷贝构造函数
String &operator = (const String &object); //赋值函数
~String();
private:
char * m_str;
};
String::String(const char *tmp)
{
m_str = NULL;
if ( NULL == tmp )
{
m_str = new char[1];
assert ( m_str != NULL ); //检测分配是否成功
memset(m_str,0,sizeof(char)*1);
*m_str = '/0';
}
else
{
int length = strlen(tmp) + 1; //多分配一个空间,用于结束符
m_str = new char[sizeof(char)*length];
assert ( m_str != NULL );
memset(m_str,0,sizeof(char)*length);
strcpy(m_str,tmp);
}
}
String::String(const String &object)
{
m_str = NULL;
int length = strlen(object.m_str)+1;
m_str = new char[length];
assert ( m_str != NULL );
memset(m_str,0,sizeof(char)*length);
strcpy(m_str,object.m_str);
}
String & String::operator = (const String & object)
{
if (this == &object ) //此处用指针判断
{
return * this;
}
if ( m_str != NULL)
{
delete []m_str;
m_str = NULL;
}
int length = strlen(object.m_str)+1;
m_str = new char[length];
assert ( m_str != NULL );
memset(m_str,0,sizeof(char)*length);
strcpy(m_str,object.m_str);
return * this; //拷贝完后返回自身,注意是*,因为是引用
}
String::~String()
{
if (m_str != NULL )
{
delete []m_str;
m_str = NULL;
}
}
- 重写string 类的构造函数和析构函数
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- String类的构造函数和析构函数
- String 的构造函数、析构函数和赋值函数
- string的构造函数,析构函数和赋值函数
- 编写类string的构造函数、拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 类String的构造函数拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 类string的构造函数、拷贝构造函数和析构函数
- 面向开发人员的KDE基本架构视图(转)
- 华鼎数据库与Pentaho BI平台的整合
- Android Map API Key
- T400s + 双飞卡(42T0961) + 南神卡 上网设置
- ATL的BUG
- 重写string 类的构造函数和析构函数
- VC6.0上编译的程序使用不调用全局对象的析构函数
- 加油 给力2011
- 执行计划——DBA的恨,开发人员的伤
- 基于MFC的OpenGL编程
- Tomcat6 数据库连接池配置
- java 开发中的23中设计模式
- MMS系列----前言
- 桌面的快捷方式右键点击没有“打开”,开头是发送到