一.概念
可以在派生类中声明一个与基类成员同名的成员。
派生类的新成员会屏蔽(hide)与其同名的基类成员,使同名的基类成员成为“不可见”的,即基类成员的名字被隐藏。
若要在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员
二.重命名数据成员
class base
{ public :
int a , b ; } ;
class derived : public base
{ public :
int b , c ; } ;
void f ( ) { derived d ; d . a = 1 ; d . base :: b = 2 ; d . b = 3 ; d . c = 4 ; };
三.重名成员函数
•如果是派生类中声明了一个与基类成员函数名字相同,参数也相同的成员函数,则基类中的成员函数将被隐藏。
•如果在派生类中声明了一个与基类成员函数名字相同,但参数不同的成员函数,则基类中的成员函数也将被隐藏。
#include<iostream>
using namespace std ;
class A
{
public:
int a1, a2 ;
A( int i1=0, int i2=0 )
{
a1 = i1;
a2 = i2;
}
void print( )
{
cout << "a1=" << a1 << '\t' << "a2=" << a2 << endl ;
}
};
class B : public A
{
public:
int b1, b2 ;
B( int j1=1, int j2=1 )
{
b1 = j1;
b2 = j2;
}
void print( )
{
cout << "b1=" << b1 << '\t' << "b2=" << b2 << endl ;
}
void printAB( )
{
A::print( ) ;
print( ) ;
}
};
int main( )
{
B b ;
b.A::print( );
b.printAB( );
}