C++中的继承是指新的类从已有的类中派生出来的过程。派生的新类拥有已有类的所有数据和方法,并可以添加自己的数据和方法。
使用继承的主要优点是代码重用和代码可维护性。派生的新类可以使用已有的类的所有功能,而不需要重新编写代码。此外,如果基类中的某些方法需要修改,则只需要修改基类,所有派生类都会受到影响。
一个新的类通过在类定义中使用关键字class
、struct
或union
后加上一个冒号和已有类的名称来定义。派生类可以选择在已有类的基础上添加新的成员变量和成员函数,也可以在不改变已有类的情况下更改某些特性。
以下是一个简单的例子,说明了如何使用继承创建一个基类Animal,以及派生类Dog和Cat:
#include <iostream>
using namespace std;
class Animal {
public:
void eat() {
cout << "I can eat!" << endl;
}
};
// Dog 从 Animal 继承
class Dog: public Animal {
public:
void bark() {
cout << "I can bark!" << endl;
}
};
// Cat 也从 Animal 继承
class Cat: public Animal {
public:
void meow() {
cout << "I can meow!" << endl;
}
};
int main( ) {
Dog myDog;
Cat myCat;
myDog.bark();
myDog.eat();
myCat.meow();
myCat.eat();
return 0;
}
在这个例子中,Dog和Cat类分别从Animal类中继承,并添加了新的成员函数bark和meow。在主函数中,我们创建了一个myDog对象和一个myCat对象,并调用各自的成员函数。
另一个例子是演示如何使用多继承来创建一个新的类。在C++中,一个类可以从多个类中继承。下面是一个简单的例子,说明了如何使用多继承创建一个新的类:
#include <iostream>
using namespace std;
// 基类 Shape
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
};
// 基类 PaintCost
class PaintCost {
public:
int getCost(int area) {
return area * 70;
}
};
// 派生类
class Rectangle: public Shape, public PaintCost {
public:
int getArea() {
return (width * height);
}
};
int main(void) {
Rectangle Rect;
int area;
Rect.setWidth(5);
Rect.setHeight(7);
area = Rect.getArea();
// 输出总面积
cout << "Total area: " << area << endl;
// 输出总花费
cout << "Total paint cost: $" << Rect.getCost(area) << endl;
return 0;
}
在这个例子中,我们定义了两个基类Shape和PaintCost,并将一个新的类Rectangle从这两个类中多重继承。派生的新类Rectangle拥有Shape和PaintCost中的所有属性和方法,并使用getArea方法计算矩形面积和getCost方法计算总花费。在主函数中,我们创建了一个Rectangle对象,并调用各自的方法来计算面积和花费。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的继承是什么? - Python技术站