class A //父类
{
private:
int a;
void f(){std::cout<<a;}
protected:
int b;
void g(){std::cout<<a;}
public:
int c;
void k(){std::cout<<a;}
};
class B : public A //子类B 公有继承 父类 A
{
public:
void df()
{
//----子类访问父类-----
std::cout<<a; //错 公有继承中 子类不能直接访问父类中的 私有 成员数据
std::cout<<b; //OK 公有继承中 子类能直接访问父类中的 保护 成员数据
std::cout<<c; //OK 公有继承中 子类能直接访问父类中的 公有 成员数据
f(); //错 公有继承中 子类不能直接访问父类中的 私有 成员函数
g(); //OK 公有继承中 子类能直接访问父类中的 保护 成员函数
k(); //OK 公有继承中 子类能直接访问父类中的 公有 成员函数
}
};
void func()
{
A a;
std::cout<<a.a; //错 外部定义对象 不能直接访问类中的 私有 成员数据
std::cout<<a.b; //错 外部定义对象 不能直接访问类中的 保护 成员数据
std::cout<<a.c; //OK 外部定义对象 能直接访问类中的 公有 成员数据
a.f(); //错 外部定义对象 不能直接访问类中的 私有 成员函数
a.g(); //错 外部定义对象 不能直接访问类中的 保护 成员函数
a.k(); //OK 外部定义对象 能直接访问类中的 公有 成员函数
}
1