zoukankan      html  css  js  c++  java
  • 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的普通构造函数            
     String::String(const char *str)      // 6分
    {
     if(str==NULL)                         
     {
      m_data = new char[1];    // 若能加 NULL 判断则更好
      *m_data = ‘\0’;                     
     }                                       
     else
     {
      int length = strlen(str);          
      m_data = new char[length+1];  // 若能加 NULL 判断则更好     
      strcpy(m_data, str);               
     }
    } 


    // 拷贝构造函数 String::String(const String &other)
    { 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)
    {   // (1) 检查自赋值
    if(this == &other) return *this;   // (2) 释放原有的内存资源
    delete [] m_data; // (3)分配新的内存资源,并复制内容
    int length = strlen(other.m_data); m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, other.m_data); // (4)返回本对象的引用
    return *this; }

      // String的析构函数
    String::~String(void)
    {
      delete [] m_data;                    
      // 由于m_data是内部数据类型,也可以写成 delete m_data;
    }

     c标准库中包含字符串库:string.h    含有strlen(),strcpy()函数等。

    c++中含有的c风格的字符串库:#include <cstring>

    c++中扩展的字符串库:#include <string>

  • 相关阅读:
    C语言实现用户输入
    QQ头像一键添加校徽
    csu oj Infected Computer 1427
    质数个数
    stl实现结构体排序关键语法要点(sort)
    理解 PHP 中的 Streams
    几款主流PHP框架的优缺点评比
    8个开发必备的PHP功能
    5个开发人员不应该错过的最好跨平台PHP编辑器
    推荐五款优秀的PHP代码重构工具
  • 原文地址:https://www.cnblogs.com/renyuan/p/3114200.html
Copyright © 2011-2022 走看看