最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)String類實例代碼

 更新時間:2017年04月06日 15:29:01   投稿:lqh  
這篇文章主要介紹了C++實現(xiàn)String類實例代碼的相關(guān)資料,需要的朋友可以參考下

C++實現(xiàn)String類實例代碼

這是一道十分經(jīng)典的面試題,可以短時間內(nèi)考查學(xué)生對C++的掌握是否全面,答案要包括C++類的多數(shù)知識,保證編寫的String類可以完成賦值、拷貝、定義變量等功能。

#include<iostream> 
using namespace std; 
 
class String 
{ 
public: 
    String(const char *str=NULL); 
    String(const String &other); 
    ~String(void); 
    String &operator =(const String &other); 
private: 
    char *m_data; 
}; 
 
String::String(const char *str) 
{ 
  cout<<"構(gòu)造函數(shù)被調(diào)用了"<<endl; 
  if(str==NULL)//避免出現(xiàn)野指針,如String b;如果沒有這句話,就會出現(xiàn)野 
         //指針 
  { 
    m_data=new char[1]; 
    *m_data=''/0''; 
  } 
  else 
  { 
   int length=strlen(str); 
   m_data=new char[length+1]; 
   strcpy(m_data,str); 
  } 
} 
String::~String(void) 
{ 
  delete m_data; 
  cout<<"析構(gòu)函數(shù)被調(diào)用了"<<endl; 
} 
 
String::String(const String &other) 
{ 
 cout<<"賦值構(gòu)造函被調(diào)用了"<<endl; 
 int length=strlen(other.m_data); 
 m_data=new char[length+1]; 
 strcpy(m_data,other.m_data); 
} 
String &String::operator=(const String &other) 
{ 
   cout<<"賦值函數(shù)被調(diào)用了"<<endl; 
   if(this==&other)//自己拷貝自己就不用拷貝了 
         return *this; 
   delete m_data;//刪除被賦值對象中指針變量指向的前一個內(nèi)存空間,避免 
          //內(nèi)存泄漏 
   int length=strlen(other.m_data);//計算長度 
   m_data=new char[length+1];//申請空間 
   strcpy(m_data,other.m_data);//拷貝 
   return *this; 
} 
void main() 
{ 
   String b;//調(diào)用構(gòu)造函數(shù) 
   String a("Hello");//調(diào)用構(gòu)造函數(shù) 
   String c("World");//調(diào)用構(gòu)造函數(shù) 
   String d=a;//調(diào)用賦值構(gòu)造函數(shù),因為是在d對象建立的過程中用a來初始化 
   d=c;//調(diào)用重載后的賦值函數(shù) 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • C++中多線程的執(zhí)行順序如你預(yù)期嗎

    C++中多線程的執(zhí)行順序如你預(yù)期嗎

    這篇文章主要為大家詳細(xì)介紹一下C++中多線程的執(zhí)行順序的相關(guān)資料,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C++多線程有一定幫助,需要的可以參考一下
    2022-10-10
  • 淺談C++內(nèi)存管理基礎(chǔ)知識

    淺談C++內(nèi)存管理基礎(chǔ)知識

    這篇文章主要為大家介紹了C++的內(nèi)存管理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Java?C++題解leetcode1598文件夾操作日志搜集器

    Java?C++題解leetcode1598文件夾操作日志搜集器

    這篇文章主要為大家介紹了Java?C++題解leetcode1598文件夾操作日志搜集器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • C語言實現(xiàn)學(xué)生成績等級劃分的方法實例

    C語言實現(xiàn)學(xué)生成績等級劃分的方法實例

    這篇文章主要給大家介紹了關(guān)于C語言實現(xiàn)學(xué)生成績等級劃分的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    在高精度計算中數(shù)組的每個元素存儲一位10進(jìn)制的數(shù)字,這樣的存儲方式并不是最優(yōu)的,32位的整型其實至少可以存儲9位高精度數(shù)字,數(shù)組元素存儲更多的位數(shù)就是壓位優(yōu)化。本文將展示壓位優(yōu)化的原理以及壓9位的實現(xiàn)和性能對比,需要的可以參考一下
    2023-01-01
  • C++ AVLTree高度平衡的二叉搜索樹深入分析

    C++ AVLTree高度平衡的二叉搜索樹深入分析

    這篇文章主要介紹了C++ AVLTree高度平衡的二叉搜索樹,二叉搜索樹雖可以縮短查找的效率,但如果數(shù)據(jù)有序或接近有序二叉搜索樹將退化為單支樹,查找元素相當(dāng)于在順序表中搜索元素,效率低下
    2023-03-03
  • C++多線程獲取返回值方法詳解

    C++多線程獲取返回值方法詳解

    這篇文章主要介紹了C++多線程獲取返回值方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • C語言實現(xiàn)隊列的示例詳解

    C語言實現(xiàn)隊列的示例詳解

    隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(head)進(jìn)行刪除操作,而在表的后端(tail)進(jìn)行插入操作。本文將用C語言實現(xiàn)隊列,感興趣的可以了解一下
    2022-06-06
  • C語言求階乘之和的三種實現(xiàn)方法(先階乘再累加)

    C語言求階乘之和的三種實現(xiàn)方法(先階乘再累加)

    對于C/C++初學(xué)者來說,可能會經(jīng)常遇到如計算階乘等問題,下面這篇文章主要給大家介紹了關(guān)于C語言求階乘之和的三種實現(xiàn)方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • C++11新增的包裝器詳解

    C++11新增的包裝器詳解

    由于函數(shù)調(diào)用可以使用函數(shù)名、函數(shù)指針、函數(shù)對象或有名稱的lambda表達(dá)式,可調(diào)用類型太豐富導(dǎo)致模板的效率極低。包裝器用于解決效率低的問題
    2022-08-08

最新評論

元江| 特克斯县| 竹山县| 丹巴县| 东兰县| 恩施市| 拉萨市| 兴安盟| 蓬溪县| 隆林| 汉川市| 塘沽区| 彭水| 盐城市| 安国市| 平定县| 沙田区| 繁峙县| 凌海市| 东辽县| 吐鲁番市| 青铜峡市| 绥棱县| 曲水县| 苍梧县| 安乡县| 剑阁县| 昌吉市| 宁陵县| 卢龙县| 建阳市| 双峰县| 清徐县| 蒙山县| 镇赉县| 册亨县| 玉山县| 鲁甸县| 灌南县| 邹平县| 苗栗市|