歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++拷貝構造函數

最近在復習C++的考試,對於上機中出現多的是構造函數\拷貝構造函數\虛函數等等接觸了很多,對它們的理解逐步的加深.

. 什麼是拷貝構造函數

首先對於普通類型的對象來說,它們之間的復制是很簡單的,例如:

int a = 100; 

int b = a;

而類對象與普通對象不同,類對象內部結構一般較為復雜,存在各種成員變量。

下面看一個類對象拷貝的簡單例子。

#include <iostream> 
 using namespace std; 
 
 class CExample { 
 private: 
     int a; 
 public: 
      //構造函數 
     CExample(int b) 
     { a = b;} 
 
      //一般函數 
     void Show () 
     { 
        cout<<a<<endl; 
      } 
 }; 
 
 int main() 
 { 
     CExample A(100); 
     CExample B = A; //注意這裡的對象初始化要調用拷貝構造函數,而非賦值 
      B.Show (); 
     return 0; 
 } 

運行程序,屏幕輸出100。從以上代碼的運行結果可以看出,系統為對象 B 分配了內存並完成了與對象 A 的復制過程。就類對象而言,相同類型的類對象是通過拷貝構造函數來完成整個復制過程的。
 
下面舉例說明拷貝構造函數的工作過程。

#include <iostream> 
 using namespace std; 
 
 class CExample { 
 private: 
    int a; 
 public: 
    //構造函數 
    CExample(int b) 
    { a = b;} 
     
    //拷貝構造函數 
    CExample(const CExample& C) 
    { 
        a = C.a; 
    } 
 
    //一般函數 
    void Show () 
    { 
        cout<<a<<endl; 
    } 
 }; 
 
 int main() 
 { 
    CExample A(100); 
    CExample B = A; // CExample B(A); 也是一樣的 
      B.Show (); 
    return 0; 
 } 

CExample(const CExample& C) 就是我們自定義的拷貝構造函數。可見,拷貝構造函數是一種特殊的構造函數,函數的名稱必須和類名稱一致,它必須的一個參數是本類型的一個引用變量。

Copyright © Linux教程網 All Rights Reserved