2013-02-17 2 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? 

그것은 mArray[i]의 값으로 초기화 된 aproxy 인스턴스를 생성하고 값을 리턴한다.

2

아니요, 여기에는 상속이 없습니다. 그리고 당신은 "방법을 돌려 보낼 수 없습니다"; "방법"은 "구성원 기능"에 대한 구어체 이름입니다.