📅  最后修改于: 2023-12-03 15:29:52.042000             🧑  作者: Mango
继承是C++中面向对象编程的核心概念之一。它允许从一个现有类派生出一个新类,从而可以重用现有类的属性和方法,并添加新的属性和方法。这个新的类被称为派生类或子类,而原有的类称为基类或父类。
继承的基本语法如下:
class DerivedClass: accessSpecifier BaseClass {
// members and methods
};
在这里,DerivedClass
是派生类的名称,accessSpecifier
是访问基类成员的方式,可以是public
,protected
或private
。BaseClass
是被派生的基类。
当派生类需要访问基类的成员时,可以使用BaseClass::
运算符。例如,当在派生类的成员函数中调用基类的成员函数时,可以使用以下语法:
void DerivedClass::someFunction() {
BaseClass::someFunction();
}
下面是一个简单的示例,演示了如何从一个基类派生出一个子类:
#include <iostream>
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);
}
};
int main() {
Rectangle Rect;
Rect.setWidth(5);
Rect.setHeight(7);
// 输出对象的面积
std::cout << "Total area: " << Rect.getArea() << std::endl;
return 0;
}
在这个例子中,Shape
类包含setWidth
和setHeight
方法,用于设置宽度和高度属性。这两个属性被声明为protected
,这意味着它们可以从子类中访问,但不能从外部访问。Rectangle
类是从Shape
类派生出来的子类,它包含getArea
方法,该方法返回矩形的面积。
在主函数中,我们创建了一个Rectangle
对象,并设置其宽度和高度属性。然后,我们调用getArea
方法来计算面积,并将结果打印到控制台。
C++允许从多个基类派生出一个子类,这被称为多重继承。语法如下:
class DerivedClass: accessSpecifier BaseClass1, accessSpecifier BaseClass2, ..., accessSpecifier BaseClassN {
// members and methods
};
在这里,accessSpecifier
是访问基类成员的方式,BaseClass1
,BaseClass2
等是被派生的基类。多重继承可以让子类从多个类中继承属性和方法,但也可能导致代码的复杂性增加。
虚继承是在多重继承中处理二义性问题的一种方式。在虚继承中,由基类首次声明的成员在派生类中只有一个共享实例,而不是多个副本。这通常用于处理菱形继承问题,其中派生类通过多个路径和不同的基类间接继承同一基类。
继承是C++中重要的面向对象编程概念之一,它允许我们从一个现有类中派生出新的类。在派生类中,我们可以重用基类的属性和方法,添加新的属性和方法。我们还可以从多个类中继承属性和方法,但这可能会增加代码的复杂性。使用虚继承可以减少二义性问题。