一文带你掌握C++中的继承
什么是继承
继承是面向对象编程的重要特性之一,它可以让一个类获得另一个类的变量和函数。这种类之间的关系被称为父子类关系或基类派生类关系。子类可以通过继承基类的成员来复用基类的代码,从而避免重复开发。
如何使用继承
在C++中,继承可以使用关键字extends或:(冒号)。子类继承了父类的所有成员,包括变量、函数和构造函数。在子类中可以使用基类的变量和函数,也可以覆盖某些基类的函数,从而实现多态性。
下面是一个例子:
#include<iostream>
using namespace std;
// 基类
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);
// 输出对象的面积
cout << "Total area: " << Rect.getArea() << endl;
return 0;
}
上面的代码中,我们定义了一个基类Shape和一个派生类Rectangle,Rectangle通过public继承Shape。Rectangle获得了Shape类中的setWidth()和setHeight()函数,通过这两个函数为Rectangle对象设置宽度和高度。在Rectangle中,我们定义了一个计算面积的函数getArea(),该函数通过访问基类中的width和height变量计算矩形的面积。
继承的类型
C++中继承有三种类型:公有继承(public)、私有继承(private)和保护继承(protected)。
- 公有继承
公有继承是最常用的继承类型,它将基类的公有成员和保护成员都继承到派生类中,而私有成员不能被继承。
下面是一个公有继承的示例:
#include<iostream>
using namespace std;
// 基类
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);
// 输出对象的面积
cout << "Total area: " << Rect.getArea() << endl;
return 0;
}
运行结果为:
Total area: 35
- 私有继承
私有继承是指派生类继承基类的私有成员,这些私有成员不能被派生类访问,只能通过基类的公有和保护成员访问。
下面是一个私有继承的示例:
#include<iostream>
using namespace std;
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
};
class Square: private Shape {
public:
void setSize(int s) {
width = s;
height = s;
}
int getArea() {
return (width * height);
}
};
int main() {
Square Sq;
Sq.setSize(5);
// 输出对象的面积
cout << "Total area: " << Sq.getArea() << endl;
return 0;
}
运行结果为:
Total area: 25
- 保护继承
保护继承是指派生类继承基类的保护成员,这些被继承的保护成员在派生类中中仍然是保护成员,只能被基类或派生类的成员访问。
下面是一个保护继承的示例:
#include<iostream>
using namespace std;
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
};
class Square: protected Shape {
public:
void setSize(int s) {
width = s;
height = s;
}
int getArea() {
return (width * height);
}
};
int main() {
Square Sq;
Sq.setSize(5);
// 输出对象的面积
cout << "Total area: " << Sq.getArea() << endl;
return 0;
}
运行结果为:
Total area: 25
总结
通过继承,子类可以获得父类的变量和函数,从而复用代码。C++中继承有三种类型:公有继承、私有继承和保护继承,不同的继承类型对父类成员的访问权限也不同。应该根据实际需求选择合适的继承类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你掌握C++中的继承 - Python技术站