若有以下说明语句:
class A { /*…*/ public : void sameFun(); }; class B : public A { /*…*/ public : void sameFun(); }; void comFun() { A a; B b; /*…*/ } (1)若在B::sameFun中调用A::sameFun,语句格式如何?它将在什么对象上操作?
(2)在comFun中可以用什么方式调用A::sameFun和B::sameFun?语句格式如何?它们将可以在什么对象上操作?
(1)若要在B::sameFun中调用A::sameFun,语句形式应为:
A::samefun(); //域作用符说明调用基类函数
调用的A::samefun将在B类对象上进行操作。
(2)在comFun中调用B::sameFun和A::sameFun的方式有:
a.A::sameFun(); //通过A类对象调用A::sameFun,在a类对象上操作。
b.sameFun(); //通过B类对象调用B::sameFun,在b类对象上操作。
b.A::sameFun(); //通过B类对象调用A::sameFun
//在b类对象上(对由基类继承下来的数据成员)操作。