北大 C++ 2.4 类成员的可访问范围

来源:互联网 发布:sql实训报告 编辑:程序博客网 时间:2024/05/12 03:11

类成员的可访问范围

 

private     指定私有成员,只能在成员函数内被访问

 

public      指定公有成员,可以再任何地方被访问

 

protected       指定保护成员,我们在讲继承的时候再来讲。

 

三种关键字出现的次数和先后顺序都没有任何限制。

class className{

      private:

           私有属性和函数

      public:

           公有属性和函数

      protected:

           保护属性和函数

};

 

 

 

 

 

缺省为私有成员

class Man {

              int nAge;

              char szName[20];

       public:

              voidSetName(char *Name){

                     strcpy(szName,Name);

}

};

 

 

类的成员函数内部,可以访问:

       当前对象的全部属性,函数

       同类其他对象的全部属性,函数。  暂时不懂,先放在这里好了。

累的成员函数以外的地方,

       只能访问该类对象的公有成员

 

class CEmployee {

private:

      charszName[30];

public:

      int salary;

      void setName(char *Name);

      voidgetName(cahr *Name);

      voidaverageSalary(Cemployee e1,Cemployee e2);

};

void CEmployee::setName(char*Name){

      strcpy(szName,name);// OK

}

 

void CEmployee::getName(char*name){

      strcpy(name,szName);//OK

}

 

 

void CEmployee::averageSalary(CEmployeee1,CEmployee e2){

      salary = (e1.salary+e2.salary)/2;

}

 

int main()

{

      CEmployee e;

strcpy(e.szName,”Tom123456789”);    //compile error

e.setName(“Tom”);   //ok

e.salary = 5000; //ok

return 0;

}

设置私有成员的目的

      强制对成员变量的访问一定要通过成员函数进行

设置私有成员的机制---隐藏

这样做的好处:

      1. 让我们的程序少出错

      2. 容易修改

比如假设我们有一个程序需要从电脑上迁移到手机上,但是我们的szName现在变成了只有szName[5]

1)如果szName不是私有,则需要修改全部:

strcpy(man1.szName,”Tom123456789”);要把所有包含szName这样的语句的地方找到然后修改。

      2)但是如果szName变成私有,所有对szName的访问都是通过成员函数进行的,那么我们只要:

      man1.setName(“Tom123456789”);

 

 

0 0