日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

String 的普通构造函数、拷贝构造函数、析构函数、赋值函数

發布時間:2025/10/17 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 String 的普通构造函数、拷贝构造函数、析构函数、赋值函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/xiaoxiangzhu660810/article/details/8149398

題目:編寫類String的構造函數、析構函數和賦值函數,已知類String的原型為: 

解答:
(1)//普通構造函數
構造函數:構造函數是一種特殊的方法,主要用來在創建對象時初始化對象,即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中,特別的一個類可以有多個構造函數,可根據其參數個數的不同或參數類型的不同來區分它們,即構造函數的重載。 String::String(const char *str) {if(str == NULL){m_data = newchar[1]; *m_data ='\0';}else{int length = strlen(str);m_data = newchar[length+1]; strcpy(m_data,str);} }(2)//拷貝構造函數
拷貝構造函數:拷貝構造函數,是一種特殊的構造函數,它由編譯器調用來完成一些基于同一類的其他對象的構建及初始化。其唯一的參數(對象的引用)是不可變的(const類型)。此函數經常用在函數調用時用戶定義類型的值傳遞及返回。拷貝構造函數要調用基類的拷貝構造函數和成員函數。如果可以的話,它將用常量方式調用,另外,也可以用非常量方式調用。
String::String(const String &other) {int length = strlen(other.m_data);m_data = newchar[length+1]; strcpy(m_data,other.m_data); }(3)// String的析構函數
析構函數:析構函數(destructor) 與構造函數相反,當對象脫離其作用于時(例如對象所在的函數已調用完畢),系統自動執行析構函數。析構函數往往用來做“清理善后” 的工作(例如在建立對象時用new開辟了一片內存空間,應在退出前在析構函數中用delete釋放)。
String::~String(void) {delete []m_data; // 或deletem_data; }(4)//賦值函數
String & String::operate =(const String&other) // 輸入參數為const型 {if(this == &other)   //檢查自賦值return *this;delete []m_data;     //釋放原有的內存資源int length = strlen( other.m_data );m_data = newchar[length+1];  //對m_data加NULL 判斷strcpy(m_data, other.m_data );return *this;        //返回本對象的引用 }注意:在這個類中包括了指針類成員變量m_data,當類中包括指針類成員變量時,一定要重載其拷貝構造函數、賦值函數和析構函數。

總結

以上是生活随笔為你收集整理的String 的普通构造函数、拷贝构造函数、析构函数、赋值函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。