C++面试题

当前位置: 面试问题网 > C++面试题 > 编写类String的构造函数、析构函数和赋值函数

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

已知类String的原型为:
   class String
   {
   public:
   String(const char *str = NULL); // 普通构造函数
   String(const String &other); // 拷贝构造函数
   ~ String(void); // 析构函数
   String & operate =(const String &other); // 赋值函数
   private:
   char *m_data; // 用于保存字符串
   };
   请编写String的上述4个函数。
   标准答案:
  
   // String的析构函数
   String::~String(void) // 3分
   {
   delete [] m_data;
   // 由于m_data是内部数据类型,也可以写成 delete m_data;
   }
  
   // String的普通构造函数
   String::String(const char *str) // 6分
   {
   if(str==NULL)
   {
   m_data = new char[1]; // 若能加 NULL 判断则更好
   *m_data = ‘’;
   }
   else
   {
   int length = strlen(str);
   m_data = new char[length+1]; // 若能加 NULL 判断则更好
   strcpy(m_data, str);
   }
   }
   // 拷贝构造函数
   String::String(const String &other) // 3分
   {
   int length = strlen(other.m_data);
   m_data = new char[length+1]; // 若能加 NULL 判断则更好
   strcpy(m_data, other.m_data);
   }
   // 赋值函数
   String & String::operate =(const String &other) // 13分
   {
   // (1) 检查自赋值 // 4分
   if(this == &other)
   return *this;
  
   // (2) 释放原有的内存资源 // 3分
   delete [] m_data;
  
   // (3)分配新的内存资源,并复制内容 // 3分
   int length = strlen(other.m_data);
   m_data = new char[length+1]; // 若能加 NULL 判断则更好
   strcpy(m_data, other.m_data);
  
   // (4)返回本对象的引用 // 3分
   return *this;
   }

【编写类String的构造函数、析构函数和赋值函数】相关文章

1. 编写类String的构造函数、析构函数和赋值函数

2. 编写类String 的构造函数、析构函数和赋值函数

3. String、StringBuffer、StringBuilder有区别

4. String s = new String(“xyz”);创建了几个String Object?

5. StringBuilder和String的区别

6. 构造方法和其他方法的区别?怎么调用父类的构造方法

7. Java里面StringBuilder和StringBuffer有什么区别

8. String和StringBuffer的区别

9. string = null 和string = \'\'的区别

10. 若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedExcepti

本文来源:https://www.mianshiwenti.com/a13140.html

点击展开全部

《编写类String的构造函数、析构函数和赋值函数》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝编写类String的构造函数、析构函数和赋值函数﹞相关内容

「编写类String的构造函数、析构函数和赋值函数」相关专题

其它栏目

也许您还喜欢