public 成员变量或者函数,可以通过类的实例对象访问,不管是在类内部还是其他作用域;
protected成员变量或者函数,只能在类内部或者public 或者protedted继承的子类内部访问;
private 成员变量或者函数,只能在类内部访问。
//这里没有阐述友元函数和友元类的情况,如下是上面阐述的实例测试:
#include
using namespace std;
class Base{
protected:
int a;
int b;
void out(){
int c = a + b;
cout << c <<endl;
}
public:
Base(){}
Base(int tempA, int tempB){
a = tempA;
b = tempB;
}
void output(){
int c = a * b;
cout << c <<endl;
}
void testTestOut(){
testOut();
}
private:
void testOut(){
int c = a * b * 2;
cout << c <<endl;
}
};
class Child: public Base{
public:
Child(int tempA, int tempB){
a = tempA;
b = tempB;
}
void printOut(){
out();
}
};
int main() {
cout << “test\n”;
Child* child = new Child(3,2);
child->printOut(); //ok,output is 5
child->output(); //ok, output is 6
//child->out(); // error: ‘void Base::out()’ is protected
//child->testOut(); //error: ‘void Base::testOut()’ is private
Base* b = new Base(4, 5);
//b->testOut(); //error: ‘void Base::testOut()’ is private
b->testTestOut(); //ok, output is 40
return 0;
}
如果是友元函数,则允许在友元函数中访问类的所有成员变量和函数;
如果是友元类的话,则允许在友元类中访问类的所有成员变量和函数;