#include<iostream>
#include<bits/stdc++.h>
using namespace std;
class String
{
public:
String(const char *str=NULL); //普通构造函数
String(const String &other); //复制构造函数
~String(void); //析构函数
String & operator =(const String &other); //赋值函数
private:
char *m_String; //私有成员 保留字符串
};
String::~String(void)
{
cout<<"Destructing"<<endl;
if(m_String!=NULL) //如果m_String 不为NULL 释放堆内存
{
delete [] m_String;
m_String =NULL; //释放后置为NULL
}
}
String::String(const char *str)
{
cout<<"Construcing"<<endl;
if(str==NULL) //如果str 为NULL 存空字符串
{
m_String=new char[1]; //分配一个字节
*m_String='\0'; //将之赋值为字符串结束符
}
else
{
m_String=new char[strlen(str)+1]; //分配空间容纳str内容
strcpy(m_String,str); //复制str到私有成员
}
}
String::String(const String &other)
{
cout<<"Constructing Copy"<<endl;
m_String =new char[strlen(other.m_String)+1]; //分配空间容纳str内容
strcpy(m_String,other.m_String); //复制str到私有成员
}
String & String::operator =(const String &other)
{
cout<<"Operate= Function"<<endl;
if(this==&other)
{
return *this;
}
delete [] m_String;
m_String =new char[strlen(other.m_String)+1];
strcpy(m_String,other.m_String);
return *this;
}
int main()
{
String a("hello");
String b("world");
String c(a);
c=b;
return 0;
}
编写string 的构造函数,析构函数,和赋值函数
最新推荐文章于 2021-02-18 20:11:50 发布