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 修饰的成员了(包括 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();  //errorcout<<stu.getname()<<"的年龄是"<<stu.getage()<<",成绩是"<<stu.getscore()<<endl;const Student *pstu = new Student("李磊", 16, 80.5);//pstu -> show();  //errorcout<<pstu->getname()<<"的年龄是"<<pstu->getage()<<",成绩是"<<pstu->getscore()<<endl;return 0;
}

stu、pstu 分别是常对象以及常对象指针,它们都只能调用 const 成员函数。

C++ const对象相关推荐

  1. const函数和const对象

    const函数和const对象 const修饰函数时,表明该函数不能修改成员变量 const修饰对象时,表明该对象不能引用成员中非const的成员函数 #include <iostream> ...

  2. const对象,NULL和nullptr,C++中创建对象数组

     1.定义成了const之后的类 #include <iostream> class area { public:int x;int y;mutable int z; //不受cons ...

  3. 动态分配的const对象

    #include <iostream> #include <vector> #include <string> using namespace std;int ma ...

  4. const指针和指向const对象的指针

    1.指向const对象的指针 C++强制要求指向const对象的指针也必须具有const特性. const double *ptr; 限定了ptr指针指向double类型const对象的, 即cons ...

  5. C++之指向const对象的指针和const指针

    1.指向const对象的指针 我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针也是const类型. ...

  6. C++指向const对象的指针和const指针

    1.指向const对象的指针 我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针也是const类型. ...

  7. 如何区分“指向const对象的指针”和“const指针”?

    const是C++中引入的一个新的关键字,它为C++编程带来了很大的方便.指向const对象的指针和const指针是两个名字很接近的概念,对于初学者来说非常容易搞混,这里对它们进行区分. 指向cons ...

  8. const对象和头文件三例外

    c++ 中 const对象默认是文件的局部变量 头文件用于声明而不是用于定义,但有三个例外. 1 定义const对象 2 定义inline函数 3 定义类 可以定义const对象是基于第一行的原因,包 ...

  9. const指针与指向const对象的指针

    一. 指向const对象的指针: 定义形式:const double *cptr; const限定了指针指向的对象类型,指针本身不是const类型 特征: 1.不能通过指针改变const对象的值,但是 ...

  10. const对象不能调用非const成员函数

    在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...

最新文章

  1. STL priority_queue sort 自定义比较终极模板
  2. python代码壁纸-70行python代码实现壁纸批量下载
  3. ai钢笔工具怎么描线_AI钢笔工具技巧,怎么画出完美的贝塞尔曲线
  4. 那些常见的C++、Qt基础面试题
  5. 浏览器兼容_查成绩浏览器不兼容怎么办?
  6. Springboot 项目中 xml文件读取yml 配置文件
  7. Windows Phone Developer Registration 开发人员无法连接注册解决
  8. mysql jsp分页技术_一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数
  9. python中惩罚的代码_如何只为在python中使用的实现支付依赖惩罚?
  10. Centos7安装NVIDIA的驱动的坑
  11. datatable java实现_在JAVA实现DataTable对象(一)
  12. 【消费量预测】基于matlab碳排放约束下煤炭消费量预测【含Matlab源码 223期】
  13. 概念模型向逻辑模型的转换规则
  14. java 检查 死链接_如何检查网站死链(网站死链接如何简易识别及处理)
  15. DiabloFX展示模板 joomla多用途二手房公司企业博客商业主题
  16. 用户体验五要素_【产品经理】如何理解“用户体验要素”5层模型?
  17. 张小龙:从FoxMail到WeChat
  18. 小游戏系列算法之五广度优先搜索,双向广搜,八数码,华容道
  19. 资深前端老司机到底牛逼在哪?
  20. JavaScript聊天器

热门文章

  1. linux批量切割图片,MAC中用Shell脚本批量裁剪各种尺寸的App图标
  2. ios 点生成线路 百度地图_iOS SDK | 百度地图API SDK
  3. qq农场 html5,腾讯客服-QQ农场/牧场-QQ农场打不开该怎么解决?
  4. java如何解析cron成可视化_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...
  5. 腾讯TIM自动回复内容怎么自定义添加
  6. 谷歌Chrome浏览器正式上新Android版黑暗模式
  7. IE11浏览器一个窗口打开多个页面设置方法
  8. wex5 app应用 定时退出
  9. java基础学习笔记(三)
  10. 迈普路由器访问控制列表配置命令_如何选购企业路由器?选购企业路由器需注意什么...