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;
    }
}
4

2 に答える 2

3

これは継承ですか?

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

これは継承ではなくmPtr、コンストラクター初期化リスト内のデータ メンバーの初期化です。intのアドレスを指すようにポインタを初期化していますint

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

aproxyの値で初期化されたインスタンスを作成し、それを値mArray[i]で返します。

于 2013-02-17T19:28:27.647 に答える
2

いいえ、ここには継承はありません。また、「メソッドを返す」ことはできません。「メソッド」は「メンバー関数」の通称です。

于 2013-02-17T19:31:28.863 に答える