程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 一個string類的復雜完成案例

一個string類的復雜完成案例

編輯:關於C++

一個string類的復雜完成案例。本站提示廣大學習愛好者:(一個string類的復雜完成案例)文章只能為提供參考,不一定能成為您想要的結果。以下是一個string類的復雜完成案例正文


string類中運用到了賦值結構函數、復制結構函數、結構函數、默許結構函數、析構函數、重載操作符等一些類操作

class String
{
	public:
		String()
		{
			data = new char[1];  //這裡為什麼運用new char[1]呢,雖然是一個字符,這是為了和析構函數堅持對稱,由於在別的結構函數中運用的char[]
			data[0]='\0';
			length = 0;
		}
		String(const char* str)
		{
			length = strlen(str);
			data = new char[length+1];
			strcpy(data,str);
			data[length]='\0';
		}
		String(const char* str,int n)
		{
			length = n;
			data = new char[n+1];
			strncpy(data,str,n);
			data[length] ='\0';
		}
		String(const String& src) //拷貝結構函數 也就是復制結構函數
		{
			length = src.length;
			data = new char[length+1];
			strcpy(data,src.data);
		}
		String& operator=(const String& src) //賦值結構函數
		{
			if(this == &src)
				return *this;
			delete [] data;
			data = new char[src.length+1];
			strcpy(data,src.data);
			return *this;
		}
		String& operator=(const char* src) //另一種的賦值結構函數
		{
			delete [] data;
			length = strlen(src);
			data = new char[length+1];
			strcpy(data,src);
			return *this;
		}
		char& operator[](int n)
		{
			return data[n];
		}
		const char& operator[](int n) const  //關於const成員函數 最好就是前往const的援用,這樣是為了防止前往值被修正
		{
			return data[n];
		}
	friend	ostream& operator<<(ostream& os,const String& st); 
		 
		~String()
		{
			delete [] data;	
		}
	private:
		char* data;
		int length;	
};
ostream& operator<<(ostream& os,const String& st)
{
   os<<st.data;
  return os;
}

以上這篇一個string類的復雜完成案例就是分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved