熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> C編程 >> 正文

編寫類String 的構造函數、析構函數和賦值函數

2022-06-13   來源: C編程 

已知類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::~String(void) //
{
? delete [] m_data;
? // 由於m_data 是內部數據類型也可以寫成 delete m_data;
}

// String 的普通構造函數
String::String(const char *str) //
{
? if(str==NULL)
? {
? m_data = new char[]; // 若能加 NULL 判斷則更好
? *m_data = \;
? }
? else
? {
? int length = strlen(str);
? m_data = new char[length+]; // 若能加 NULL 判斷則更好
? strcpy(m_data str);
}
}

// 拷貝構造函數
String::String(const String &other) //
{
? int length = strlen(otherm_data);
? m_data = new char[length+]; // 若能加 NULL 判斷則更好
? strcpy(m_data otherm_data);
}

// 賦值函數
String & String::operate =(const String &other) //
{
? // () 檢查自賦值 //
? if(this == &other)
? return *this;
? // () 釋放原有的內存資源 //
? delete [] m_data;
? // ()分配新的內存資源並復制內容 //
? int length = strlen(otherm_data);
? m_data = new char[length+]; // 若能加 NULL 判斷則更好
? strcpy(m_data otherm_data);
? // ()返回本對象的引用 //
? return *this;
}


From:http://tw.wingwit.com/Article/program/c/201404/30455.html
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.