美文网首页
编写类string的构造函数、析构函数和赋值函数

编写类string的构造函数、析构函数和赋值函数

作者: 小小唯大大胖 | 来源:发表于2018-03-27 21:57 被阅读0次

已知类String的原型为:
class String
{
public:
String(const char *str =NULL); //普通构造函数
String(const String&s); //拷贝构造函数
~String(); //析构函数
String & operator =(const String &s); //赋值函数
private:
char *m_data; //用于保存字符串
};
答:
String::String(const char *str)
{
cout<<"普通构造函数"<<endl;
if(str==NULL) //如果str为空,存空字符串
{
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<<"复制构造函数"<<endl;
m_String=new char[strlen(other.m_String)+1];
strcpy(m_String,other.m_String);
}
String::~String(void)
{
cout<<"析构函数"<<endl;
if(m_String!=NULL) //如果m_String 不为NULL,释放堆内存
{
delete [] m_String; //释放后置为NULL
m_String=NULL;
}
}
String & String::operator =(const String &other)
{
cout<<"赋值函数"<<endl;
if(this==&other) //如果对象与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("word"); //调用普通构造函数
String c(a); //调用复制构造函数
c=b; //调用赋值函数
return 0;
}

相关文章

  • 高质量C++编程指南 ----类的构造函数、析构函数与赋值函数

    构造函数、析构函数与赋值函数是每个类最基本的函数。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含...

  • C++三五法则

    1、需要析构函数的类也需要拷贝构造函数和拷贝赋值函数。 通常,若一个类需要析构函数,则代表其合成的析构函数不足以释...

  • c++学习笔记2(GeekBand)

    拷贝构造、拷贝赋值和析构 c++中有Big Three三个特殊的函数,他们就是拷贝构造函数,拷贝赋值函数和析构函数...

  • [GeekBand]第二周学习笔记

    三大函数:拷贝构造,拷贝赋值,析构 任何带有pointer members的类必须有拷贝构造函数和拷贝赋值函数。 ...

  • 无标题文章

    类string的构造函数、拷贝构造函数和析构函数 引用http://www.cppblog.com/life02/...

  • [字符串] 自己实现一个string类(一)

    C++类一般包括:构造函数,拷贝构造函数,赋值构造函数和析构函数四大函数。 在上面的赋值构造函数中,都是先dele...

  • (笔记)C++面向对象高级编程(上) - 2 Boolan

    (有指针Class -String) 1. Big Three: 拷贝构造函数, 拷贝赋值函数, 析构函数 2. ...

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • 构造函数

    构造函数 构造函数的数组的应用 类中包含类,并且给类传参 析构函数(逆构造函数):每个构造函数都析构函数,谁最先构...

  • Effective C++笔记

    2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 默认构造函数和析构函数主要是给编译器一个地方...

网友评论

      本文标题:编写类string的构造函数、析构函数和赋值函数

      本文链接:https://www.haomeiwen.com/subject/rtkecftx.html