目录
总结
语法
继承类型
实例
总结 【C++|C++(类的继承)】1、多继承:一个子类可以有多个父类,继承了多个父类的特性;
2、继承类型有public、protected和private三种,继承时如果未使用访问修饰符,则默认为private;
3、一个派生类继承了所有的基类方法,但下列情况除外:
- 基类的构造函数、析构函数和拷贝构造函数。
- 基类的重载运算符。
- 类的友元函数。
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…其中,访问修饰符继承方式是 public、protected 或 private 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔
{
<派生类类体>
};
继承类型 采用不同的继承方式,基类成员在派生类中访问修饰符的变化:
基类成员的访问修饰符 | 继承方式 | ||
public | protected | private | |
public | public | protected | private |
protected | protected | protected | private |
private | 不可访问 | 不可访问 | 不可访问 |
- 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
- 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
- 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
#include
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: " << Rect.getArea() << endl;
// 输出总花费
cout << "Total paint cost: $" << Rect.getCost(area) << endl;
return 0;
}
输出:
Total area: 35参考资料:
Total paint cost: $2450
https://www.runoob.com/cplusplus/cpp-inheritance.html
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 数据结构和算法|LeetCode 的正确使用方式
- 设计模式|设计模式_创建型模式——工厂方法
- 学习分享|【C语言函数基础】
- #|7.分布式事务管理
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树