C++继承
1.继承概述
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。
        当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。
2.访问控制和继承
派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。我们可以根据访问权限总结出不同的访问类型,如下所示:
| 访问 | public | protected | private | 
|---|---|---|---|
| 同一个类 | yes | yes | yes | 
| 派生类 | yes | yes | no | 
| 外部的类 | yes | no | no | 
一个派生类继承了所有的基类方法,但下列情况除外:
- 基类的构造函数、析构函数和拷贝构造函数。
- 基类的重载运算符。
- 基类的友元函数。
注:如果想访问基类的private成员,可以调用基类的Get函数访问。
3.重名成员和成员函数
如果在派生类中定义了与基类相同名称的成员或者函数,则基类的成员或者函数会被覆盖,但是可以显式调用,例如:
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();  
}
//在C++中,派生类构造函数的一般格式为:
      //派生类::派生类名(参数总表):基类名(参数表)
     {
             // 派生类新增成员的初始化语句
     }
     //注意:这是基类有构造函数且含有参数时使用
4.构造函数和析构函数的执行顺序:
(1)当派生类中不含对象成员时
●在创建派生类对象时,构造函数的执行顺序是:基类的构造函数→派生类的构造函数;●在撤消派生类对象时,析构函数的执行顺序是:派生类的析构函数→基类的析构函数。
●在定义派生类对象时,构造函数的执行顺序:基类的构造函数→对象成员的构造函数→派生类的构造函数;
●在撤消派生类对象时,析构函数的执行顺序:派生类的析构函数→对象成员的析构函数→基类的析构函数。
5.赋值兼容规则
  ①.赋值兼容规则指在程序中需要使用基类对象的任何地方,都可以用公有派生类的对象来替代。
 
 赋值兼容规则中所指的替代包括以下的情况:
  a 派生类的对象可以赋给基类对象
  b 派生类的对象可以初始化基类的引用
  c 派生类的对象的地址可以赋给基类类型的指针
派生类得到了除了构造、析构函数以外的所有成员
且这些成员的访问控制属性也和基类完全相同。
这样,它便具备了基类的所有功能。
利用赋值兼容规则:
a 派生类的对象可以赋给基类对象(强制类型转换)
b 派生类的对象可以初始化基类的引用
c 派生类的对象的地址可以赋给基类类型的指针
一个派生类对象也是一个基类对象,一个基类对象可派上用场的地方,派生类对象一样可派上用场。反之则不然。

 投递用友等公司10个岗位
投递用友等公司10个岗位