1、类成员访问级别有三种:public、private、protected。 2、继承方式的不同会改变继承成员的访问属性: public继承:父类成员在子类中保持原有访问级别; private继承:父类成员在子类中变为private成员; protected继承: (1)父类中public成员会变成protected; (2)父类中protected成员仍然为protected; (3)父类中private成员仍然为private; 3、private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,派生类都不能直接使用基类的私有成员 。 举例代码:
//类的继承方式对子类对外访问属性影响 #include <cstdlib> #include <iostream> using namespace std; class A { private: int a; protected: int b; public: int c; A() { a = 0; b = 0; c = 0; } void set(int a, int b, int c) { this->a = a; this->b = b; this->c = c; } }; class B : public A { public: void print() { //cout<<"a = "<<a; //报错 cout<<"b = "<<b; cout<<"c = "<<endl; } }; class C : protected A { public: void print() { //cout<<"a = "<<a; //报错 cout<<"b = "<<b; cout<<"c = "<<endl; } }; class D : private A { public: void print() { //cout<<"a = "<<a; //报错 cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; } }; int main(int argc, char *argv[]) { A aa; B bb; C cc; D dd; aa.c = 100; bb.c = 100; //cc.c = 100; //类的外部是什么含义? //dd.c = 100; aa.set(1, 2, 3); bb.set(10, 20, 30); //cc.set(40, 50, 60); //dd.set(70, 80, 90); bb.print(); cc.print(); dd.print(); system("pause"); return 0; }