C++继承复习过程.pptVIP

  • 2
  • 0
  • 约9.59千字
  • 约 80页
  • 2020-06-20 发布于浙江
  • 举报
例2 class Base { public: Base(); Base(int i); ...... }; class Derive : public Base { public: Derive(int i, int j){} ...... }; 例3 class Base { public: Base(){ cout Base constructor endl;} ~Base(){ cout Base destructor endl;} void print(); }; class Derive : public Base { public: void set(int i) { b=i; } void print(){ cout b endl; } private: int b; }; void main() { Derive d; d.set(2); d.print(); } Base constructor 2 Base destructor 组合与继承 组合:一个类的数据成员是另一个类的对象; 继承和组合都利用了已经定义的类,但是类之间关系上有差别; 构造函数的调用顺序: 调用基类构造函数; 调用各成员对象的构造函数,调用顺序按照它们在类中声明的顺序。 执行派生类的构造函数体中的内容; class Base { int a; public: Base(int i) { a=i; cout Base constructor endl; } ~Base(){ cout Base destructor endl; } void print(){ cout a endl;} }; class Member { int b; public: Member(int j) { b=j; cout Member constructor endl; } ~Member(){cout Member destructor endl; } void print(){cout b endl;} }; class Derive : public Base { int c; Member mem; public: Derive(int i, int j, int k) : mem(j), Base(i) { c=k; cout Derive constructor endl; } ~Derive(){ cout Derive destructor endl;} void print() { Base::print(); mem.print(); cout c endl; } }; void main() { Derive d(2,3,4); d.print(); } Base constructor Member constructor Derive constructor 2 3 4 Derive destructor Member destructor Base destructor class Base { int a; public: Base(int i):a(i){ } }; class Derive : public Base { int b; public: Derive(int i) :b(i*15),Base(b){ } }; void main() { Derive d(10); } 赋值兼容原则 一个公有继承的派生类对象可以隐式转化为一个基类对象: 用派生类的对象给基类对象赋值; 用派生类的对象来初始化基类的引用; 把派生类对象的地址赋值给指向基类的指针; 把指向派生类对象的指针赋值给指向基类对象的指针; 访问范围 基类对象不能代替派生类对象; 基类成员 派生类成员 class A { public: void print1(){} }; class B: public A { public: void print2(){} }; B bp1, *pbp; A ap1 = bp1; //OK A ap2 = bp1; //OK A *ptr = bp1; //OK ptr = pbp; //OK ptr-print1(); //OK ptr-print2(); //Error class Base { int a; public: void X(int i) {a=i;} }; class Derive : public Base { int b; pu

文档评论(0)

1亿VIP精品文档

相关文档