您的位置:首页 > 编程语言 > C语言/C++

C++继承重名问题

2017-08-13 15:14 141 查看
一、重名成员处理

1.派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员

2.在派生类中使用基类的同名成员,显式地使用类名限定符:

类名 :: 成员 

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.h>

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() ; //派生类对象调用自身的成员函数

       }

};

void main()

{ B  b ;        b.A::print(); b.printAB();  }

运行结果:

小结:

通过继承,类B具有两个同名成员函数

void A::print(); // void print( A * this );

void B::print(); // void print( B * this );

 派生类也是基类,基类指针可以指向

    派生类对象

 派生类中定义与基类同名的成员函数,

    称为重载成员函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: