class B
class XX : B {}; //B是私有基类
struct YY : B {}; //B是公有基类
第一:private, public, protected 访问标号的访问范围。
private:只能由1.该类中的函数、2.其友元访问。
不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、友元 2.子类的函数、子类友元访问。
但不能被该类的对象访问。
public:可以被1.该类中的函数、友元 2.子类的函数、子类友元 3.该类的对象访问。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
第二:类的继承后方法属性变化。
private 属性不能够被继承。
使用private继承,父类的protected和public属性在子类中变为private;
使用protected继承,父类的protected和public属性在子类中变为protected;
使用public继承,父类中的protected和public属性不发生改变;
如下所示:
public: protected: private:
public继承 public protected 不可用
protected继承 protected protected 不可用
private继承 private private 不可用
protected继承和private继承能降低访问权限。
class A
{
public:
void fun(){cout <<"aa"<<endl;}
};
typedef void (A::* pf)(); //指向成员的指针
A aa;
pf pp = &A::fun;
(aa.*pp)();
静态成员不予任何对象相关联,因此指向静态成员的指针也就是一个常规指针,例如:
class Task
{
static void schedule();
}
void (*p)() = &Task::schedule; //可以
void (Task::* pm)() = &Task::schedule; //错误
构造函数不能是虚函数