继承中的访问模式( public继承) 基类的 public成员能够被程序中所有函数访问 基类的 private成员只能被基类的成员函数和友元访问 基类的 protected成员只能被基类的成员和友元以及派生 类的成员和友元访问。 注意:不能被类的实例(对象)访问。 派生类如何访问基类的数据成员? 默认情况:派生类成员简单地使用成员名就可以引用基类的 public成员和 protected成员。 当派生类重新定义了基类的成员函数时,访问方式: base- class name:+成员函数 0 2018, SEU. All rights reserved. 16
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 16 继承中的访问模式(public继承) 基类的public成员能够被程序中所有函数访问 基类的private成员只能被基类的成员函数和友元访问 基类的protected成员只能被基类的成员和友元以及派生 类的成员和友元访问。 注意:不能被类的实例(对象)访问。 派生类如何访问基类的数据成员? 默认情况:派生类成员简单地使用成员名就可以引用基类的 public成员和protected成员。 当派生类重新定义了基类的成员函数时,访问方式: base-class name:: + 成员函数
class A i private int x,y: public void fOr int maino void go const iB b [cout <<x<<, <<y< <end, b A: fo class B: public A b ho iint z: return 0: public void f(ntr void ho: error c2660: 'f: function does not 【f(; take 0 parameters A: fo 只要在派生类中重写基类的函数(函数 名相同,即使参数不同),就无法默认 调用基类的相关函数,此时基类中的函 数需要“基类函数名”来调用。 erved. 17
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 17 class A { private: int x,y; public: void f(); void g() const {cout<<x<<‘,’<<y<<endl; } }; class B: public A { int z; public: void f(); void h() { f(); A::f(); } }; int main() { B b; b.f(); b.A::f(); b.h(); return 0; } void f(int); void h(); { f(1); 只要在派生类中重写基类的函数(函数 名相同,即使参数不同),就无法默认 调用基类的相关函数,此时基类中的函 数需要“基类::函数名”来调用。 error C2660: 'f' : function does not take 0 parameters