二 支配规则
当派生类中新增的成员与基类中的成员同名时,则在没有使用作用域运算符时缺省指代的是派生类中新增的同名成员。这种优先关系称为支配规则。例如:
程序中A行的b1.a没有指明所属的类,即缺省指的是派生类中新增的成员变量a,而b1,A::a则是指从基类中继承来的成员a,由于派生类中没有与基类成员变量b同名的新增成员,则成员b1.b不需要指明所属的基类。
当派生类中新增的成员与基类中的成员同名时,则在没有使用作用域运算符时缺省指代的是派生类中新增的同名成员。这种优先关系称为支配规则。例如:
#include<iostream.h>
class A{
public:
int a,b;
A(int x,int y){a=x;b=y;}
};
class B:public A{
public:
int a;
B(int x,int y,int z):A(y,z){a=x;}
};
void main()
{
B b1(1,2,3);
cout<<b1.a<<'\t'<<b1.A::a<<'\t'<<b1.b<<'\n';//A行
}
程序中A行的b1.a没有指明所属的类,即缺省指的是派生类中新增的成员变量a,而b1,A::a则是指从基类中继承来的成员a,由于派生类中没有与基类成员变量b同名的新增成员,则成员b1.b不需要指明所属的基类。