21xrx.com
2024-06-03 05:28:26 Monday
登录
文章检索 我的文章 写文章
C++类的继承与派生题目及解析
2023-07-13 08:12:09 深夜i     --     --
继承 派生 C++类 题目解析 继承层次结构

C++作为一种面向对象的编程语言,类的继承与派生是其重要特性之一,也是每个程序员需要掌握的基础知识。下面是几个C++类的继承与派生题目及解析。

1、定义一个父类Person,包含姓名、性别、年龄三个数据成员,再定义两个派生类Student和Teacher,分别增加学号和课程成员。请设计这三个类的关系,使得Teacher类能访问Person类中的数据成员和函数。

答:定义Person类时,将姓名、性别、年龄三个数据成员设置为protected或public属性,使得继承Person类的派生类可以访问这些成员。再将Person类的成员函数设置为virtual,这样在派生类中重新定义同名函数时会自动调用该类的成员函数。如下:

class Person{

protected:

  string strName;

  char chGender;

  int nAge;

public:

  virtual void showInfo()

    cout<<"Name:"< <

    cout<<"Gender:"< <

    cout<<"Age:"< <

};

class Student:public Person{

protected:

  int nID;

public:

  void showInfo(){

    Person::showInfo();

    cout<<"ID:"< <

  }

};

class Teacher:public Person{

protected:

  string strCourse;

public:

  void showInfo(){

    Person::showInfo();

    cout<<"Course:"< <

  }

};

2、定义一个父类Shape,拥有纯虚函数getArea(),定义两个派生类Circle和Rectangle,实现计算面积。请设计这三个类的关系。

答:在Shape类中定义一个纯虚函数getArea(),派生的Circle和Rectangle类需要实现该函数。如下:

class Shape{

public:

  virtual float getArea() = 0;

};

class Circle : public Shape{

public:

  float getArea() {

    return 3.14 * r * r;

  }

  float r;

};

class Rectangle : public Shape{

public:

  float getArea() {

    return x * y;

  }

  float x;

  float y;

};

3、定义一个父类Animal,包含一些动物的共有属性,如叫声、颜色等,再定义两个派生类Dog和Cat,分别实现父类的某些函数,如叫声函数。请设计这三个类的关系。

答:在Animal类中定义叫声等共有属性,派生的Dog和Cat类需要实现叫声函数。如下:

class Animal{

protected:

  string strVoice;

  string strColor;

public:

  void getVoice()

    cout << strVoice << endl;

};

class Dog : public Animal{

public:

  Dog()

    strVoice="Wang Wang!";

};

class Cat : public Animal{

public:

  Cat()

    strVoice="Miao Miao!";

};

在使用C++类的继承与派生时,需要注意父类成员的访问权限和虚函数的应用。只有掌握了类的继承与派生,才能更好的进行面向对象的程序设计。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复