问题
填空题
在下面的程序的横线处填上适当的语句,是该程序的输出为12。 #include<iostream> using namespace std; class Base { public: int a; Base(int i){a=i;} }; class Derived:public Base { int a; public: Derived(int x):Base(x),b(x+1){} void show() { 【11】 ;//输出基类数据成员a的值。 cout<<b<<endl; } }; int main() { Derived d(1); d.show(); return 0; }
答案
参考答案:cout<<Base::a
解析: 本题考核作用域分辨符号的使用。作用域分辨符号是“::”,它可以用来限定要访问的成员所在的类的名称。一般来说,在派生类中对基类成员的访问应该是惟一的。但是,多继承情况下可能造成对基类中某个成员的访问出现不惟一的情况,通过使用对象作用域分辨符可以解决这种对基类成员访问的二义性问题。题中派生类 Derived与基类Base定义了数据成员a,所以要访问基类数据成员可以通过作用域分辨符来实现。