1、继承
C++类的3种继承方式,分别是public继承,protected继承,private继承。
最常用的还是public继承。class默认的是private继承,它的member如果没写权限也是默认private。struct则相反,默认的是public继承。派生类型必须对想要重定义的每个继承成员进行声明(virtual 函数)。
像 private 成员一样,protected 成员不能被类的用户访问。像 public 成员一样,protected 成员可被该类的派生类访问。派生类只能通过派生类对象访问其基类的 protected 成员,派生类对其基类类型对象的 protected 成员没有特殊访问权限。
void Bulk_item::memfcn(const Bulk_item &d, const Item_base &b)
{
// attempt to use protected member
double ret = price; // ok: uses this->price
ret = d.price; // ok: uses price from a Bulk_item object
ret = b.price; // error: no access to price from an Item_base
}
• 如果是公用继承,基类成员保持自己的访问级别:基类的 public 成员为
派生类的 public 成员,基类的 protected 成员为派生类的 protected
成员。
• 如果是受保护继承,基类的 public 和 protected 成员在派生类中为
protected 成员。
• 如果是私有继承,基类的的所有成员在派生类中为 private 成员。
如果基类定义 static 成员,则整个继承层次中只有一个这样的成员。
要确定到基类的转换是否可访问,可以考虑基类的 public成员是否访问,如果可以,转换是可访问的,否则,转换是不可访问的