-
#include <iostream> #include <stdlib.h> #include <string> using namespace std; /** * 定义人类: Person * 数据成员: m_strName * 成员函数: attack() */ class Person { public: string m_strName; void attack() { cout << "attack" << endl; } }; /** * 定义士兵类: Soldier * 士兵类公有继承人类 * 数据成员: m_strName * 成员函数: attack() */ class Soldier:public Person { public: string m_strName; void attack() { cout << "fire!!!" << endl; } }; int main(void) { // 实例士兵对象 Soldier soldier; // 向士兵属性赋值"tomato" soldier.m_strName = "tomato"; // 通过士兵对象向人类属性赋值"Jim" soldier.Person::m_strName = "Jim"; // 打印士兵对象的属性值 cout << soldier.m_strName << endl; // 通过士兵对象打印人类属性值 cout << soldier.Person::m_strName << endl; // 调用士兵对象方法 soldier.attack(); // 通过士兵对象调用人类方法 soldier.Person::attack(); return 0; }查看全部
-
父子关系 成员同名 隐藏; 同名函数,访问隐藏方法:对象.父类::隐藏成员(同名成员);//soldier.Person::play(); 同名数据成员,父类::同名数据成员;//Person::code;查看全部
-
继承关系查看全部
-
私有继承private查看全部
-
保护继承查看全部
-
公有继承public查看全部
-
公有继承 class A:public B 保护继承 class A:protected B 私有继承 class A:private B查看全部
-
基类--派生类 父类--子类查看全部
-
实例化一个子类,先实例化父类,再实例化子类,父类的实例化是隐性的。 析构函数和实例化是相反的,析构一个子类,先析构子类再析构父类。 实例化子类以后,可以访问父类和本身的成员和成员函数。查看全部
-
派生类《-》基类 子类《-》父类查看全部
-
子类的对象可以赋给父类; 可以用基类的指针指向派生类的对象;查看全部
-
父子关系 成员同名 隐藏; 同名函数,访问隐藏方法:对象.父类::隐藏成员(同名成员);//soldier.Person::play(); 同名数据成员,父类::同名数据成员;//Person::code;查看全部
-
实例化一个子类,先实例化父类,再实例化子类 析构一个子类,先析构子类,再析构父类查看全部
-
虚析构函数: 当父类的对象是指针类型时,可以指向子类的对象,在析构时,要用虚析构函数,否则只能对父类进行析构,不能对子类析构!查看全部
-
注意:派生类的对象可以赋值给基类,但是基类的对象是不可以赋值给派生类的; 基类和派生类是is-a的关系; 子类对象可以对父类对象初始化; 父类的指针对象可以指向子类的对象,可以父类的指针对象只能访问子类中从父类继承的成员;查看全部
举报
0/150
提交
取消