📜  C ++ |继承|问题10(1)

📅  最后修改于: 2023-12-03 14:59:36.861000             🧑  作者: Mango

C++ | 继承 | 问题10

在C++中,继承是一种面向对象编程的重要概念。它允许派生类从基类中获得其属性和方法,从而避免了编写冗余和重复的代码。在这个问题中,我们将探讨C++中的继承以及如何在派生类中访问基类的成员函数和变量。

继承的基本概念

在C++中,一个类可以从另一个类派生出来。派生类可以访问基类的公有成员,并可以重写(覆盖)其虚函数,从而实现多态性。

class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }

   protected:
      int width;
      int height;
};

class Rectangle: public Shape {
   public:
      int getArea() {
         return (width * height);
      }
};

在上面的代码中,我们创建了两个类:Shape和Rectangle。Rectangle类从Shape类中继承,它可以访问Shape类中声明的setWidth()和setHeight()函数。此外,Rectangle类实现了一个名为getArea()的新函数,它使用派生类中继承来的width和height计算矩形的面积。

在派生类中访问基类的成员函数和变量

在派生类中,可以通过以下方式访问基类中声明的公有成员:

  • 通过对象来访问:派生类中的对象可以直接调用基类中的公有成员函数。
Rectangle r;
r.setWidth(5);
r.setHeight(10);
  • 通过指针来访问:可以使用基类的指针来访问派生类中继承的成员。
Rectangle *pRect = new Rectangle;
Shape *pShape = pRect;
pShape->setWidth(5);
pShape->setHeight(10);
  • 通过引用来访问:可以使用基类的引用来访问派生类中继承的成员。
Rectangle r;
Shape &s = r;
s.setWidth(5);
s.setHeight(10);
总结

继承是C++中的一个重要概念。它使得代码得到重用,使类的层次结构分层化,从而简化了程序的设计和维护。在派生类中,可以通过对象、指针或引用来访问基类中的成员函数和变量。