C++中的private、protected、public区别

来源:互联网 发布:spss软件应用例子 编辑:程序博客网 时间:2024/04/30 09:10

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;}


 

0 0
原创粉丝点击