2013-02-17 21 views
0

我想了解下面的代碼如何運行。從aproxy繼承mPtr?結構數組返回一個方法,aproxy,在結構aproxy?構造函數的主體之前冒號是否表示繼承

struct aproxy { 
    aproxy(int & r) : mPtr(& r) {} // is this inheritance? 
    void operator = (int n) { 
     if (n > 1) { 
      throw "not binary digit"; 
     } 
     *mPtr = n; 
    } 
    int * mPtr; 
}; 

struct array {  
    int mArray[10]; 
    aproxy operator[](int i) {  
     return aproxy(mArray[i]); // what does this line do? 
    } 
}; 

int main() { 
    try { 
     array a; 
     a[0] = 1; 
     a[0] = 42;  
    } 
    catch(const char * e) { 
     cout << e << endl; 
    } 
} 

回答

3

這是繼承嗎?

aproxy(int & r) : mPtr(& r) {} 

這不是繼承,它是數據成員mPtr在構造函數初始化列表初始化。您正在初始化指向int的指針以指向int的地址。

return aproxy(mArray[i]); // what does this line do? 

它創建了一個aproxy例如,與mArray[i]值初始化,並由值返回。

2

不,這裏沒有繼承。你不能「返回一種方法」; 「方法」是「成員函數」的通俗名稱。