加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C++ const对象 常对象

发布时间:2022-07-04 16:02:24 所属栏目:语言 来源:互联网
导读:在 C++ 中,const 也可以用来修饰对象,称为常对象。一旦将对象定义为常对象之后,就只能调用类的 const 成员(包括 const 成员变量和 const 成员函数)了。 定义常对象的语法和定义常量的语法类似: const class object(params); class const object(params
C++ const对象 常对象
  在 C++ 中,const 也可以用来修饰对象,称为常对象。一旦将对象定义为常对象之后,就只能调用类的 const 成员(包括 const 成员变量和 const 成员函数)了。
 
  定义常对象的语法和定义常量的语法类似:
  const  class  object(params);
  class const object(params);
 
  当然你也可以定义 const 指针:
  const class *p = new class(params);
  class const *p = new class(params);
 
  class为类名,object为对象名,params为实参列表,p为指针名。两种方式定义出来的对象都是常对象。
  如果你对 const 的用法不理解,请猛击《C语言const的用法详解》。
  一旦将对象定义为常对象之后,不管是哪种形式,该对象就只能访问被 const 修饰的成员了(包括 const 成员变量和 const 成员函数),因为非 const 成员可能会修改对象的数据(编译器也会这样假设),C++禁止这样做。
 
  常对象使用举例:
  #include <iostream>
  using namespace std;
  class Student{
  public:
      Student(char *name, int age, float score);
  public:
      void show();
      char *getname() const;
      int getage() const;
      float getscore() const;
  private:
      char *m_name;
      int m_age;
      float m_score;
  };
  Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
  void Student::show(){
      cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
  }
  char * Student::getname() const{
      return m_name;
  }
  int Student::getage() const{
      return m_age;
  }
  float Student::getscore() const{
      return m_score;
  }
  int main(){
      const Student stu("小明", 15, 90.6);
      //stu.show();  //error
      cout<<stu.getname()<<"的年龄是"<<stu.getage()<<",成绩是"<<stu.getscore()<<endl;
      const Student *pstu = new Student("李磊", 16, 80.5);
      //pstu -> show();  //error
      cout<<pstu->getname()<<"的年龄是"<<pstu->getage()<<",成绩是"<<pstu->getscore()<<endl;
      return 0;
  }
  本例中,stu、pstu 分别是常对象以及常对象指针,它们都只能调用 const 成员函数。

(编辑:拼字网 - 核心网)

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