Coordinate coor1(3,5); //定义一个普通对象const Coordinate &coor2 = coor1; //coor2是对象的常引用const Coordinate *pCoor = &coor1; //pCoor是一个指向常对象的指针Coordinate const * pCoor2 = &coor1; //pCoor2是一个常指针,指向一个普通对象//调用常成员函数,都可以coor1.printInfo(); //正确,普通对象可以调用常成员函数coor2.printInfo(); //正确pCoor->printInfo(); //正确pCoor2->printInfo(); //正确//调用普通成员函数coor1.getX(); //正确coor2.getX(); //错误,常引用只能调用常成员函数pCoor->getX(); //错误, 常对象的指针也只能调用常成员函数pCoor2->getX();//正确,普通对象的指针什么都能调用//修改指针指向的位置Coordinate coorB(7,9);pCoor1 = &coorB //pCoor1指针本身不是常变量,它可以指向别的对象pCoor2 = &coorB //pCoor2是一个常指针,不能再指向别的对象
  1. 常对象只能调用常成员函数,不能调用普通成员函数
  2. 普通对象能够调用常成员函数,也能够调用普通成员函数
  3. 常指针和常引用都只能调用对象的常成员函数。
  4. 一个对象可以有多个对象常引用

定义一个坐标类,在栈上实例化坐标类常对象,并给出坐标(3,5),然后定义常引用、常指针,最后使用对象、引用、指针分别通过调用信息打印函数打印坐标信息。

打印结果如图

#include <iostream>
using namespace std;
class Coordinate
{public:Coordinate(int x, int y){// 设置X,Y的坐标m_iX=x;m_iY=y;}// 实现常成员函数void printInfo() const{cout<<"("<<m_iX<<","<<m_iY<<")"<<endl;}
public:int m_iX;int m_iY;
};int main(void)
{const Coordinate coor(3, 5);// 创建常指针pconst Coordinate *p =&coor;// 创建常引用cconst Coordinate &c=coor;coor.printInfo();p->printInfo();c.printInfo();  return 0;
}

【C++---16】常指针和常引用相关推荐

  1. C++常对象,常变量,常成员函数详解(含添加内容)

    既要使数据能在一定范围内共享,又要保证它不被任意修改,可使用const. ·        用const修饰的声明数据成员称为常数据成员 ·        用const修饰的声明成员函数称为常成员函数 ...

  2. 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释

    1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...

  3. c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象

    目录 4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 4.3.2 this指针概念(非常重要) 4.3.3 空指针访问成员函数 4.3.4 const修饰成员函数 相关教 ...

  4. 常指针和指向常量的指针

    最近在学习引用,有一些学习心得,记录如下: 1:引用是变量的别名 int a; int b&=a; 要注意引用只有声明,而没有定义,并且引用必须在声明的时候进行初始化,一旦与某个变量关联起来, ...

  5. C++中的常引用、常对象、常函数、常数据成员

    1.常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改.常引用的声明形式为:const 类型说明符 &引用名. ...

  6. const指针 常指针

    (2)常指针 必须进行初始化,且const指针的值不能修改. #include<iostream> using namespace std; int main(){const int nu ...

  7. c++ const 常指针

    const char * a; //指向const对象的指针或者说指向常量的指针. char const * a; //同上 char * const a; //指向类型对象的const指针.或者说常 ...

  8. 常指针、指向常量的指针、指向常量的常指针

    三者的区分 简而言之- 常指针:地址不可变,内容可变 指向常量的指针:地址可变,内容不可变 指向常量的常指针:地址不可变,内容不可变 样例 代码如下: #include <iostream> ...

  9. 彻底理解JVM常考题之分级引用模型

    转载自   彻底理解JVM常考题之分级引用模型 本文通过探析Java中的引用模型,分析比较强引用.软引用.弱引用.虚引用的概念及使用场景,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目提供 ...

最新文章

  1. usaco A game
  2. vue拖拽控件生成界面代码_Blue HMI人机界面开发平台
  3. vue computed 源码分析
  4. 怎么在linux的cmd中运行c项目,如何在cmd窗口编译运行c语言程序?
  5. maven springboot 除去指定的jar包_SpringBoot的运行机制
  6. Mybatis 详解--- 一级缓存、二级缓存
  7. sql截去最后一位_SqlServer从左边 最后 中间截取字符串
  8. 利用Kubernetes名称空间来管理内存和CPU资源(一)
  9. 10 款最新的 jQuery 内容滑块插件
  10. excel函数修改服务器端数据,勤哲Excel服务器表达式函数详解
  11. 如何清理电脑C盘垃圾
  12. 推荐参考文献元数据挖掘的几篇论文
  13. 计算机word文档工作区名称,word文档界面名称 word文档的界面组成
  14. python麻将源码_a8贵州麻将源码 贵阳麻将a8源码 a8贵阳捉鸡源码
  15. vivo 官网资源包适配多场景的应用
  16. GitHub 上 100K+ Star 的前端面试开源项目汇总(进大厂必备)
  17. 计算机组织与结构性能设计答案,计算机组织及结构—性能设计第八版答案-COA8e.pdf...
  18. JS实现浏览器打印、打印预览
  19. 淘宝天猫开放平台店铺商品发布(新)-淘宝店铺发布API接口流程代码对接说明
  20. 2021年四川高考成绩等位分查询,2021年四川高考成绩查询网站查分网址:https://www.sceea.cn/...

热门文章

  1. 如何制作网页-初学者入门HTML+CSS
  2. 从阿西莫夫机器人三大定律 谈起
  3. TypeScript的枚举
  4. Catagory添加属性、扩展方法
  5. 此实现不是windows平台fips验证的加密算法的一部分
  6. 阿里旺旺 php,QQ、旺旺、MSN、SKYPE在线代码生成
  7. Unity 游戏入门 九、 精灵动画 Sprite Animation
  8. undefined method `devise' for User(Table doesn't exist):Class解决方法
  9. 为了讨好程序员,阿里云和 Costa 开了家码农咖啡馆
  10. 小技巧(2):谷歌网盘容量15G不够用?不科学上网谷歌网盘下载速度太慢?试一下这个“Google teamdrive开通”+“GDIndex链接Google Drive”