构造函数主体前面的冒号是否表示继承



我想了解下面的代码是如何运行的。aproxy是从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;
    }
}

这是遗产吗?

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

这不是继承,而是构造函数初始化列表中数据成员mPtr的初始化。您正在初始化指向int的指针,以指向int的地址。

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

它创建一个aproxy实例,用值mArray[i]初始化,并按值返回。

不,这里没有继承。并且您不能"返回方法";"方法"是"成员函数"的口语名称。

最新更新