C++继承易忘点

三种继承的特点

Public:继承时保持基类中各成员的属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;

Private:继承时基类中各成员属性均变为private,并且基类中的private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员;

Protected:继承时基类中各成员属性均变为protected,并且基类中private被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;

 

访问控制与继承

和私有成员类似,受保护的成员对于类的用户来说是不可访问的。

和公有成员类似,受保护的成员对于派生类和友元来说是可访问的。此外,protected还有一条重要地性质。

派生类的成员或友元只能通过派生类对象来访问基类的受保护成员。派生类对于一个基类对象中的受保护成员没有任何访问特权。

 

这里的访问控制仅仅是针对成员函数的参数是类的引用的形式:

例:

class Base
{
protected:
int prot_mem;
};
class Sneaky : public Base
{
public:
friend void clobber(Sneaky&);
friend void clobber(Base&);
int j;
};

void Sneaky::clobber(Sneaky &s) { s.j = s.prot_mem = 0;}
void Sneaky::clobber(Base &s) { b.port_mem = 0;}

posted @ 2016-03-20 15:09  没吃完的火腿肠  阅读(174)  评论(0编辑  收藏  举报