C++ 构造函数主体前的冒号是否表示继承
我希望了解下面的代码是如何运行的。aproxy是否继承自mPtr?结构数组是否在结构aproxy中返回方法aproxyC++ 构造函数主体前的冒号是否表示继承,c++,inheritance,struct,C++,Inheritance,Struct,我希望了解下面的代码是如何运行的。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";
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;
}
}
struct aproxy{
aproxy(int&r):mPtr(&r){}//这是继承吗?
void运算符=(int n){
如果(n>1){
抛出“非二进制数字”;
}
*mPtr=n;
}
int*mPtr;
};
结构数组{
int mArray[10];
aproxy运算符[](int i){
return aproxy(mArray[i]);//这条线做什么?
}
};
int main(){
试一试{
阵列a;
a[0]=1;
a[0]=42;
}
捕获(常量字符*e){
库特
这是遗产吗
这不是继承,而是构造函数初始化列表中数据成员mPtr
的初始化。您正在初始化指向int
的指针,以指向int
的地址
return aproxy( mArray[i] ); // what does this line do?
它创建一个aproxy
实例,用mArray[i]
的值初始化,并按值返回
这是遗产吗
这不是继承,而是构造函数初始化列表中数据成员mPtr
的初始化。您正在初始化指向int
的指针,以指向int
的地址
return aproxy( mArray[i] ); // what does this line do?
它创建一个aproxy
实例,用mArray[i]
的值初始化,并按值返回它。否,此处没有继承。并且您不能“返回方法”;“方法”是“成员函数”的通俗名称。否,此处没有继承。您不能“返回方法”;“方法”是“成员函数”的通俗名称