公用继承:基类成员保持自己的访问级别;
受保护继承:基类的public和protected成员在派生类中为protected成员
私有继承:基类的所有成员在派生类中为private成员。
接口继承与实现继承;
public派生类继承基类的接口,它具有与基类相同的接口。涉及良好的类层次中,public派生类的对象可以用在任何需要基类对象的地方。
使用private或protected派生的类不继承基类的接口,相反,这些派生通常被称为实现继承。派生类在实现中使用被继承类但继承基类的部分并未成为其接口的一部分。
继承和组合:
继承,定义一个类作为另一个类的公用派生类时,派生类应反映与基类的“是一种”关系。
组合,反映了“有一个”的关系,或则是包含,成员关系。
注意:
派生类可以恢复继承成员的访问级别,但不能使访问级别比基类中原来指定的更加严格或更加宽松。
eg:class Base {
public:
std::size_t size() const { return n;}
protected:
std::size_t n;
};
class Derived : private Base{……}
在这一继承层次中,size在Base中为public, 但在Derived中为private。为了使size在Derived中成为public,可以在Derived的public部分增加一个using声明。如下这样改变Derived的定义,可以使size成员你呢狗狗被用户访问,并使n能