以下代码使用mingw编译通过。 1、类可以访问该类的对象的private和protected成员: #include <iostream> using namespace std; class A{ private: int ax; protected: int bx; public: A(int x):ax(x),bx(x+1) { cout<<"A is Creating! ax is"<<ax<<",bx is"<<bx<<endl; } void printA(A& a) { cout<<a.ax<<a.bx<<endl; } void print(){cout << "this is a" << endl;} }; int main() { A a(11); A a2(12); a.printA(a2); return 0; } 2、类可以通过该类对象的引用来调用该对象中该类的父类的protected成员,不能调用父类的private成员,也不能够通过父类对象的引用来调用父类的protected成员和private成员: #include <iostream> using namespace std; class A{ private: int ax; protected: int bx; public: A(int x):ax(x),bx(x+1) { cout<<"A is Creating! ax is"<<ax<<",bx is"<<bx<<endl; } void printA(A& a) { cout<<a.ax<<a.bx<<endl; } void print(){cout << "this is a" << endl;} }; class B:public A{ public: B(int x):A(x) { cout<<"B is Creating!"<<endl; } void printB(B& b) { cout<<b.bx<<endl; //cout<<b.ax<<endl;这样写就是错误的了 } void printB_father(A& a) { // 以下两种写法都是错误的 //cout<<a.ax<<endl; //cout<<a.bx<<endl; } void print(){cout << "this is b" << endl;} }; int main() { B b(11); B b2(12); A a(15); b.printB(b2); b.printB_father(a); return 0; }