#include <stdio.h>
class A
{
public:
virtual void foo1() { printf("in A::foo1()/n"); }
private:
virtual void foo2() { printf("in A::foo2()/n"); }
};
// class B 继承 class A, 但是他改写了函数的访问权限
// foo1() 从public被改为private
// foo2() 从private被改为public
class B : public A
{
private:
virtual void foo1() { printf("in B::foo1()/n"); }
public:
virtual void foo2() { printf("in B::foo2()/n"); }
};
int main(int argc, char *argv[])
{
A *a = new B();
a->foo1(); //编译器正常通过编译, 并且运行是调用了B::foo1()函数, 但是B::foo1()是private属性, 不能被这样调用的。
//a->foo2();
printf("Hello World!/n");
return 0;
}
结论就是, 在类继承的操作中我们不应该改变成员的访问权限。