21xrx.com
2024-11-22 13:25:12 Friday
登录
文章检索 我的文章 写文章
C++中使用抽象类的基本方法
2023-06-27 19:08:04 深夜i     --     --
C++ 抽象类 继承 纯虚函数 实现

C++是一种面向对象的编程语言,它提供了一些基本的语法和类库,可以方便地创建抽象类。抽象类是一种特殊的类,它只定义接口,而不提供具体的实现。抽象类不能被实例化,只能作为其他类的基础类使用。

C++中创建抽象类的步骤如下:

1. 定义一个基类,并将其中一些函数声明为纯虚函数。纯虚函数是一种没有实现的函数,它只定义了函数的接口。在C++中,将函数定义为纯虚函数需要在函数声明后加上“=0”的标记。

示例代码:


class Shape {

  public:

    virtual double area() = 0;

    virtual void print() = 0;

};

2. 从基类派生出具体类。派生类必须实现基类中的纯虚函数,否则它也将成为抽象类。派生类可以继续添加自己的成员函数和数据成员。

示例代码:


class Rectangle : public Shape {

  private:

    double length;

    double width;

  public:

    Rectangle(double l, double w) : length(l), width(w) {}

    virtual double area() {

      return length*width;

    }

    virtual void print()

      cout << "This is a rectangle." << endl;

      cout << "Length: " << length << endl;

      cout << "Width: " << width << endl;

    

};

class Circle : public Shape {

  private:

    double radius;

  public:

    Circle(double r) : radius(r) {}

    virtual double area() {

      return 3.14*radius*radius;

    }

    virtual void print()

      cout << "This is a circle." << endl;

      cout << "Radius: " << radius << endl;

    

};

3. 在主程序中使用抽象类。由于抽象类不能被实例化,通常需要将它作为指针或引用类型传递。

示例代码:


int main() {

  Shape *shapes[2];

  shapes[0] = new Rectangle(2, 3);

  shapes[1] = new Circle(4);

  for (int i=0; i<2; i++) {

    shapes[i]->print();

    cout << "Area: " << shapes[i]->area() << endl;

  }

  return 0;

}

在这个示例中,我们创建了两个具体类Rectangle和Circle,并通过抽象类Shape来对它们进行了统一的管理。在主程序中,我们创建了一个Shape类型的指针数组,并在其中放置了两个具体类的实例。然后我们循环遍历数组中的元素,分别调用它们的print()和area()函数,实现了对抽象类的操作。

总之,抽象类是C++中非常有用的一种类型,可以用于定义一些通用的接口,方便地管理各种具体类的实例。为了使用抽象类,需要遵循上述步骤,定义基类、派生具体类,并在主程序中使用抽象类的接口。通过这些方式,可以充分发挥面向对象编程的优势,创建更加灵活和可扩展的程序。

  
  

评论区

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