如何在 c++ 中创建派生类

How to create derived class in c++

本文关键字:创建 派生 c++      更新时间:2023-10-16

我对如何处理C++中的继承感到困惑

我想在构造函数上传递参数。但是当我创建一个没有参数的类时,我才运行它。

这个小程序:

#include <iostream>
using namespace std;
// Base class
class Shape { 
  protected:
  int width, height;
  public:
  Shape(int w, int h) {  
    width = w;
    height = h;
  }
  void setDimensions(int w, int h)  {
    width = w;
    height = h;
  }
};
// New class Rectangle based on Shape class
class Rectangle: public Shape {
  public:
    int getArea() {
      return (width * height);
    }
};

编译时出现错误:

$ g++ inheritance.cpp -o inheritance -g -std=c++11
inheritance.cpp:44:13: error: no matching constructor for initialization of 'Rectangle'
  Rectangle r(3, 4)
            ^ ~~~~
inheritance.cpp:33:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
class Rectangle: public Shape {
      ^
inheritance.cpp:33:7: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 2 were provided
inheritance.cpp:33:7: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 2 were provided
构造

函数不是从Shape继承的。您需要为 Rectangle 提供一个构造函数,该构造函数可以采用以下参数签名:

Rectangle(int w, int h) : Shape(w,h) { }