c++中的继承与派生.pptVIP

  • 27
  • 0
  • 约3.71万字
  • 约 107页
  • 2021-10-24 发布于浙江
  • 举报
(1)派生类对象可以(kěyǐ)向基类对象赋值 用子类(公用派生类)对象对其基类对象赋值 A a1; B b1; a1=b1; a1.age=23; b1.age=21; 第九十四页,共107页。 (2)派生类对象可以(kěyǐ)初始化基类的引用。 A a1; B b1; A r=a1; A r=b1; 第九十五页,共107页。 (3) 函数的参数是基类对象或基类对象的引用,相应的实参可以(kěyǐ)用子类对象 (4) 派生类对象的地址可以(kěyǐ)赋给指向基类对象的指针变量,即指向基类对象的指针变量也可以(kěyǐ)指向派生类对象。 第九十六页,共107页。 可以将一个派生类对象(duìxiàng)的地址赋给基类的指针变量。 基类对象(duìxiàng) 派生类对象(duìxiàng) Base b; Derive d; Base *basep; basep basep=b; basep basep = d basep只能引用从基类继承来的成员。 基类指针 派生类对象 基类对象 第九十七页,共107页。 #include iostream #include string using namespace std; class Student {public: Student(int,string,float); void display(); private: int num; string name; float score; }; Student::Student(int n,string nam,float s) {num=n; name=nam; score=s; } void Student::display() {coutendlnum:numendl; coutname:nameendl; coutscore:scoreendl; } class Graduate:public Student {public: Graduate(int,string,float,float); void display(); private: float pay; }; void Graduate::display() {Student::display(); coutpay=payendl; } 第九十八页,共107页。 Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){} int main() {Student stud1(1001,Li,87.5); Graduate grad1(2001,Wang,98.5,563.5); Student *pt=stud1; pt-display(); pt=grad1; pt-display(); return 0; } 第九十九页,共107页。 第一百页,共107页。 4.8 继承与组合 在一个类中以另一个类的对象作为数据成员(chéngyuán)的,称为类的组合。 class Teacher { …… } class BirthDate { …… } class Professor:public Teacher {private: BirthDate birthday;} 成员(chéngyuán)类 组合(zǔhé)类(复合类) 第一百零一页,共107页。 派生类是基类的具体化实现,是基类中的一种。 继承是“是”的关系,是纵向的 组合是“有”的关系,是横向(hénɡ xiànɡ)的 4.9 继承在软件开发中的重要意思 软件重用 第一百零二页,共107页。 1. 派生类的对象对它的哪一类基类成员是可以访问的?(???? ) ?? A.公有继承的基类的公有成员??????B. 公有继承的基类的保护成员 ?? C. 公有继承的基类的私有成员???????D. 保护继承的基类的公有成员 2. 关于多继承二义性的描述,(???? )是错误的。 A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性 B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性 C.解决二义性最常用的方法(fāngfǎ)是作用域运算符对成员进行限定 D.派生类和它的基类中出现同名函数时,将可能出现二义性 A D 第一百零三页,共107页。 下面程序的运行(yùnxíng)结果为( ) #includeiostream. h c

文档评论(0)

1亿VIP精品文档

相关文档