文章目录
继承
- 继承顾名思义就是对长辈本有的东西进行获取与使用,即两个以及两个类以上的关系
- 在获取与使用时会存在一些情况:
- public:长辈对外公开的自身所有物,最终都会是后代的
- protected:受保护的自身所有物,最终也是后代的,但外人不知道
- private:长辈私人所有的隐私物,不想让任何人知道和获取,所以后代以及其他人都不可知
- 长辈与后代必须有严格先后,长辈的下一代不能是长辈的下一代的下一代,即兄弟关系不能变成父子关系。用程序语言来说,子类继承时,不能继承和自己平级的类,如下例子 [1]:
cpp
class Shape
{
protected:
float width_;
float height_;
};
// 错误情况,在当前例子中,Rectangle类将会同时继承Shape和PaintCost两类
// 这样会导致无法区分所继承的成员变量是由哪一类传递来的
// class PaintCost: public Shape
// {
// };
// 正确情况
class PaintCost
{
};
class Rectangle : public Shape, public PaintCost
{
public:
int getArea()
{
// 如果使用错误情况,此时无法明确width_和height_是继承自哪里
// 因为PaintCost类也继承了Shape类,所以也有width_和height_变量
return (width_ * height_);
}
};
重载和重写
区别
重载 | 重写 | |
---|---|---|
范围 | 同一类 | 不同类(基类与派生类之间,即多态概念) |
声明样式 | 函数名相同,参数不同 | 函数名和参数都相同 |
关键字 | 可忽略不写 | 基类必须带有 virtual 关键字 |