8.2公有派生与私有派生 ●●●●● ●●●● class D11: public D1 i ●●0 ●●● public. ●●●● void test( {b1=5;//可以,b1为 public b2=6;∥/可以,b2为 proteced b3=7∥/不可以,b3为 private } class D2: private Base t public: void testo {b1=8//可以,b1为 public b2=9}/可以,b2为 proteced b3=10}//不可以,b3为 private }
8.1.2 公有派生与私有派生 class D11:public D1 { public: void test() { b1 = 5; // 可以,b1为public b2 = 6; // 可以,b2为proteced b3 = 7; // 不可以,b3为private } } class D2:private Base { public: void test() { b1 = 8; // 可以,b1为public b2 = 9; // 可以,b2为proteced b3 = 10; // 不可以,b3为private } }
8.2公有派生蜀私有派生 ●●●●● class D22: public D2 t ●●●● ●●0 public: ●●● ●●●● void testo {b1=11;∥不可以,b1b2经过上次派生变为 b2=12;//不可以 private b3=13;//不可以 } class D3: protected Base t public. void testo b1=15 可以,b1为 proteced b2=16 可以,b2为 proteced b3=17#//不可以
8.1.2 公有派生与私有派生 class D22:public D2 { public: void test() { b1 = 11; // 不可以,b1,b2经过上次派生变为 b2 = 12; // 不可以 private b3 = 13; // 不可以 } } class D3:protected Base { public: void test() { b1 = 15; // 可以,b1为proteced b2 = 16; // 可以,b2为proteced b3 = 17; // 不可以 } }
8.2公有派生与私有派生 class D33: public D3 i ●●●●● ●●●● public. ●●0 ●●● ●●●● void test( b1=18//不可以,b1为 proteced b2=19}//不可以,b2为 proteced b3=20}//不可以 maino D11d1 d1b1=1;//合法 d1b2=2; d1b3=3 D22d2 d2b1=41 d2b2=5 d2b3=6
8.1.2 公有派生与私有派生 class D33:public D3 { public: void test() { b1 = 18; // 不可以, b1为proteced b2 = 19; // 不可以, b2为proteced b3 = 20; // 不可以 } } main() { D11 d1; d1.b1 = 1; // 合法 d1.b2 = 2; d1.b3 = 3; D22 d2; d2.b1 = 4; d2.b2 = 5; d2.b3 = 6;
81,2公有派兰与私有派兰 ●●●●● ●●●● D33d3 ●●0 ●●● ●●●● d3b1=7 d3.b2=8 d3b3=9 基类成员对派生类对象的可访问性归结如下: 1、对公有继承方式,、只有基类的公有成员可被派生对象所访问, 其他成员都不能被访问 2、对私有或保护继承方式,基类中所有成员都不能被派生类的 对象所访问
8.1.2 公有派生与私有派生 D33 d3; d3.b1 = 7; d3.b2 = 8; d3.b3 = 9; } 基类成员对派生类对象的可访问性归结如下: 1、对公有继承方式,只有基类的公有成员可被派生对象所访问, 其他成员都不能被访问 2、对私有或保护继承方式,基类中所有成员都不能被派生类的 对象所访问
82派生类的构造画数与析构画数|::。 ●●●● 派生类的构造函数的定义形式为 ●●0 派生类名:派生类名(参数总表):基类名1(参数表1)《,基 类名2(参数表2),……,基类名n(参数表n)》,《成员对 象名1(成员对象参数表1),……,成员对象名m(成员对象 参数表m)》 ■a ∥派生类新增成员的初始化; }∥所列出的成员对象名全部为新增成员对象的名字 在构造函数的声明中,冒号及冒号以后部分必须略去。 所谓不能继承并不是不能利用,而是把基类的构造函数作为新 的构造函数的一部分,或者讲调用基类的构造函数。 这个构造函数的定义,与包含成员对象类的构造函数相类似。 冒号后的基类名,成员对象名的次序可以随意,这里的次序与 调用次序无关
派生类的构造函数的定义形式为: 派生类名::派生类名(参数总表):基类名1(参数表1)《,基 类名2(参数表2),……,基类名n(参数表n)》,《成员对 象名1(成员对象参数表1),……,成员对象名m(成员对象 参数表m)》 { …… // 派生类新增成员的初始化; } // 所列出的成员对象名全部为新增成员对象的名字 在构造函数的声明中,冒号及冒号以后部分必须略去。 所谓不能继承并不是不能利用,而是把基类的构造函数作为新 的构造函数的一部分,或者讲调用基类的构造函数。 这个构造函数的定义,与包含成员对象类的构造函数相类似。 冒号后的基类名,成员对象名的次序可以随意,这里的次序与 调用次序无关。 8.2 派生类的构造函数与析构函数