C++引用和指標的區別

來源:互聯網
上載者:User

標籤:student   his   style   地址   opera   mem   參數   變數   最佳化   

一、引用和指標的定義

  引用:它是給另一個變數取一個別名,不會再次分配空間(可以帶來程式的最佳化)

  指標:它是一個實體,需要分配空間

      引用在定義的時候必須進行初始化,並且空間不能夠改變。

   指標在定義的時候不一定要初始化,並且指向的空間可變。(註:引用的值不能為NULL)---------->可以帶來程式的安全性

   引用訪問一個變數是直接存取,而指標訪問一個變數是間接訪問

 

二、C++初始化函數6個預設函數

  1.建構函式

  2.解構函式

  3.拷貝建構函式(當函數參數為對象時候)  ------->淺拷貝   深拷貝

    Text  t1;

    Text t2(t1)

              Text t2 = t1;

  4.賦值函數 ----------->淺賦值  深賦值

   Text t1;

   Text t2;

   t2 = t1;

  5.Text a;

           Text *b = &a;

   Text*  operator&(){ return this};

  

       6.const Text a  (常對象);

          const Text *b = &a;

   const  Text* operator(){return this};

 

三、深拷貝、淺拷貝

  執行過程:調用一次建構函式,一次自訂拷貝建構函式,兩次解構函式。兩個對象的指標成員所指記憶體不同。

  淺拷貝只是對指標的拷貝,拷貝後兩個指標指向同一個記憶體空間

  深拷貝不但對指標進行拷貝,而且對指標指向的內容進行拷貝,經深拷貝後的指標是指向兩個不同地址的指標。

 

Student::Student(){      name = new char(20);      cout << "Student " << endl;}Student::~Student(){         cout << "~Student " << (int)name << endl;         delete name;         name = NULL;}Student::Student(const Student &s){         name = new char(20);         memcpy(name, s.name, strlen(s.name));         cout << "copy Student " << endl;}

 

C++引用和指標的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.