Home >Backend Development >C++ >Implementation methods and examples of multiple inheritance in C++

Implementation methods and examples of multiple inheritance in C++

PHPz
PHPzOriginal
2023-08-22 09:27:361422browse

1. Introduction to C Multiple Inheritance

In C, multiple inheritance means that one class can inherit the characteristics of multiple classes. This method can combine the characteristics and behaviors of different classes into one class, thereby creating new classes with more flexible and complex functions.

C's multiple inheritance method is different from other object-oriented programming languages ​​such as Java and C#. C allows one class to inherit multiple classes at the same time, while Java and C# can only implement single inheritance. Precisely because multiple inheritance has more powerful programming capabilities, multiple inheritance has been widely used in C programming.

2. How to implement multiple inheritance in C

Multiple inheritance in C is implemented by including multiple base classes in the definition of a class. In the specific implementation process, we can implement multiple inheritance in the following two ways:

1. Virtual inheritance method

In C, virtual inheritance sets the base class as a virtual base class a method. The base class with virtual inheritance will not have the problem of multiple inheritance when the derived class inherits, and avoid the problem of the same members appearing in multiple base classes.

2. Direct inheritance method

In addition to virtual inheritance, multiple inheritance in C can also use direct inheritance. Compared with virtual inheritance, this method does not require a virtual base class to be directly inherited by the derived class, which is relatively simple.

3. Examples of C multiple inheritance

In the following example, we will implement multiple inheritance through direct inheritance.

Define three base classes: Shape, Circle, and Triangle, with Shape as the base class, and Circle and Triangle inherit from Shape.

class Shape {
public:
  virtual double getArea() {
    return 0;
  }
};

class Circle : public Shape {
public:
  Circle(double r) {
    radius = r;
  }
  double getArea() {
    return 3.14 * radius * radius;
  }
private:
  double radius;
};

class Triangle : public Shape {
public:
  Triangle(double a, double b, double c) {
    sideA = a;
    sideB = b;
    sideC = c;
  }
  double getArea() {
    double p = (sideA + sideB + sideC) / 2;
    return sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
  }
private:
  double sideA;
  double sideB;
  double sideC;
};

Next, we will define a derived class Graph, and inherit both Circle and Triangle classes, thereby achieving multiple inheritance.

class Graph : public Circle, public Triangle {
public:
  Graph(double r, double a, double b, double c) : Circle(r), Triangle(a, b, c) {}
  double getArea() {
    return Circle::getArea() + Triangle::getArea();
  }
};

In the above code, we inherit both the Circle and Triangle classes through direct inheritance, and overload the getArea() method by calling getArea() of the Circle and Triangle classes. method, and finally calculate the sum of the graphic areas.

Finally, we can conduct the following test:

int main() {
  Circle c(5);
  cout << "圆的面积: " << c.getArea() << endl;

  Triangle t(3, 4, 5);
  cout << "三角形的面积: " << t.getArea() << endl;

  Graph g(5, 3, 4, 5);
  cout << "圆和三角形的总面积: " << g.getArea() << endl;

  return 0;
}

Through the above test, we can see that through multiple inheritance, we can not only realize that one class has the characteristics of multiple classes at the same time, You can also create new, more flexible and complex classes by combining different features.

Summary

The above is an introduction to the implementation methods and examples of C multiple inheritance. In actual programming, although multiple inheritance can bring more flexible and powerful programming capabilities, it also requires us to maintain caution and clear thinking to avoid conflicts between classes.

The above is the detailed content of Implementation methods and examples of multiple inheritance in C++. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn