0

我想了解下面的代码是如何运行的。代理是从 mPtr 继承的吗?struct array 是否在 struct 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 回答