private, public, protected 访问标号的访问范围
private:
只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。
protected:
可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。
public:
可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
#include<iostream>
using namespace std;
class A
{
public:
A();
A(int s,int n);
int getNum() const;
int getSum() const;
friend int get_Num(A&);
friend int get_Sum(A&);
protected:
int sum;
private:
int num;
};
A::A()
{
num=0;
sum=0;
}
A::A(int s,int n)
{
num=n;
sum=s;
}
int A::getNum() const
{
return num;
}
int A::getSum() const
{
return sum;
}
int get_Num(A &a)
{
return a.num;
}
int get_Sum(A &a)
{
return a.sum;
}
class B:public A
{
public:
B(int s,int n):A(s,n){}
int BgetNum() const;
int BgetSum() const;
};
/*
int B::BgetNum() const
{
return num;//派生类不能访问基类的私有成员
}
*/
int B::BgetSum() const
{
return sum;//派生类可以访问基类的保护成员
}
int main()
{
A a1;
cout<<"num:"<<a1.getNum()<<",sum:"<<a1.getSum()<<endl;
cout<<"num:"<<get_Num(a1)<<",sum:"<<get_Sum(a1)<<endl;
A a2(3,2);
cout<<"num:"<<a2.getNum()<<",sum:"<<a2.getSum()<<endl;
cout<<"num:"<<get_Num(a2)<<",sum:"<<get_Sum(a2)<<endl;
system("pause");
return 0;
}