加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

C++里面设置类成员 的访问权限有何优势

发布时间:2022-12-07 11:19:55 所属栏目:编程 来源:
导读:  在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。

  在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对

  在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。
 
  在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 private、protected 属性的成员。 本节重点讲解 public 和 private,protected 将在继承中讲解。 下面通过一个 Student 类来演示成员的访问权限:
  #include <iostream>
 
  using namespace std;
 
  
 
  //类的声明
 
  classStudent{
 
  private: //私有的
 
  char *m_name;
 
  int m_age;
 
  float m_score;
 
  
 
  public: //共有的
 
  void setname(char *name);
 
  void setage(int age);
 
  void setscore(float score);
 
  void show();
 
  };
 
  
 
  //成员函数的定义
 
  void Student::setname(char *name){
 
  m_name = name;
 
  }
 
  void Student::setage(int age){
 
  m_age = age;
 
  }
 
  void Student::setscore(float score){
 
  m_score = score;
 
  }
 
  void Student::show(){
 
  cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
 
  }
 
  
 
  int main(){
 
  //在栈上创建对象
 
  Studentstu;
 
  stu.setname("小明");
 
  stu.setage(15);
 
  stu.setscore(92.5f);
 
  stu.show();
 
  
 
  //在堆上创建对象
 
  Student*pstu = new Student;
 
  pstu -> setname("李华");
 
  pstu -> setage(16);
 
  pstu -> setscore(96);
 
  pstu -> show();
 
  
 
  return 0;
 
  }
 
  运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 类的声明和成员函数的定义都是类定义的一部分,在实际开发中,我们通常将类的声明放在头文件中,而将成员函数的定义放在源文件中。 类中的成员变量 m_name、m_age 和m_ score 被设置成 private 属性,在类的外部不能通过对象访问。也就是说,私有成员变量和成员函数只能在类内部使用,在类外都是无效的。 成员函数 setname()、setage() 和 setscore() 被设置为 public 属性,是公有的,可以通过对象访问。 private 后面的成员都是私有的,直到有 public 出现才会变成共有的;public 之后再无其他限定符,所以 public 后面的成员都是共有的。 成员变量大都以m_开头,这是约定成俗的写法,不是语法规定的内容。以m_开头既可以一眼看出这是成员变量,又可以和成员函数中的形参名字区分开。 以 setname() 为例,如果将成员变量m_name的名字修改为name,那么 setname() 的形参就不能再叫name了,得换成诸如name1、_name这样没有明显含义的名字,否则name=name;这样的语句就是给形参name赋值,而不是给成员变量name赋值。 因为三个成员变量都是私有的,不能通过对象直接访问,所以必须借助三个 public 属性的成员函数来修改它们的值。下面的代码是错误的:
  Studentstu;
 
  //m_name、m_age、m_score 是私有成员变量,不能在类外部通过对象访问
 
  stu.m_name = "小明";
 
  stu.m_age = 15;
 
  stu.m_score = 92.5f;
 

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!