指向对象的常指针

将指向对象的指针变量声明为const型,并使之初始化,这样指针值始终保持为其初始值,不能改变。

Time t1(10,12,15),t2;
Time * const ptr1=&t1;
ptr1=&t2;

定义指向对象的常指针的一般形式为

类名    *    const    指针变量=对象地址;

注意应该在定义指针变量时使之初始化

指向对象的常指针变量的值不能被改变,即始终指向同一个对象,但可以改变其所指向对象中的数据成员(非const型)的值。

往往用常指针作为函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象。如果在函数的执行过程中,修改了该形参的值,编译系统就会出现错误,给出出错信息,这样比用人工来保证形参值不被修改更可靠

指向常对象的指针

如果一个变量已经被声明成常变量,则只能用指向常变量的指针变量指向它,而不能用一般的(非const型的)指针变量指向它。

const int a;//定义常变量a
const int *p;//定义指向常变量的指针
p=&a;

对于对象也是如此,如果声明一个对象为常对象,则只能用指向常对象的指针指向它,而不能用一般的(非const型的)指针变量指向它。

const Time t1;//定义常对象
const Time *p;//定义指向常对象的指针
p=t1;

定义指向常对象的指针变量的格式

const    类名    * 指针名;

有以下几点需要注意:

(1)一个指向常对象的指针是可以指向一个非const型的对象的,但是指向的对象是不能通过指针来改变的。

而一个常对象只能由指向常对象的指针指向,具体看表:

(2)注意指向常对象的指针和指向对象的常指针的差别

Time * const p;//指向对象的常指针
const Time * p;//指向常对象的指针

(3)指向常对象的指针最常用于函数的形参,目的是保护形参指针所指向的对象,使他在函数执行过程中不被修改。

(4)如果定义了一个指向常对象的指针变量,是不能通过它改变所指向的对象的值的,但是指针变量本身的值是可以改变的。

const Time *p=&t1;//定义指向常对象的指针变量p,并指向对象t1
p=&t2;//p改为指向t2,合法

const在*前面,则是指向常变量的指针;const在*后面,则是指向变量的常指针。

C++中指向对象的常指针和指向常对象的指针的更多相关文章

  1. 父类构造函数中的this指针在子类构造对象后,这个this指针指向什么

    子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分.因此子类对象的this指针是指向子类对象自己.

  2. c++中指针常量,常指针,指向常量的常指针区分

    const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * con ...

  3. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  4. cocos2dx中CC_CALLBACK_1等宏中this指针实际指向

    首先看代码,我在Helloworld中添加两个函数. void HelloWorld::addTarget(){ Size visibleSize = Director::getInstance()- ...

  5. C++中const修饰基本数据类型、指针、引用、对象

    const修饰基本数据类型 #include <iostream> using namespace std; void main(){ const int a = 1; const cha ...

  6. C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址

    C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址 讲解之前,了解下什么是虚函数,什么是虚表指针,了解下语法,(也算复习了) 开发知识为了不码字了,找了一篇介绍比较好的,这里我扣过来了,当 ...

  7. 深入理解JS函数中this指针的指向

    函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...

  8. C++反汇编第二讲,反汇编中识别虚表指针,以及指向的虚函数地址

    讲解之前,了解下什么是虚函数,什么是虚表指针,了解下语法,(也算复习了) 开发知识为了不码字了,找了一篇介绍比较好的,这里我扣过来了,当然也可以看原博客链接: http://blog.csdn.net ...

  9. c++中关于值对象与其指针以及const值对象与其指针的问题详细介绍

    话不多说,先附上一段代码与运行截图 //1 const int a = 10; //const 值对象 int *ap = (int *)&a;//将const int*指针强制转化为int* ...

随机推荐

  1. dojo 官方翻译 dojo/domReady 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/domReady.html#dojo-domready dom加载完成后,执行. requi ...

  2. [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. hd acm2035

    求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方” 思路:后三位只跟后三位相乘有关,所以可以每乘一次都对1000取余. 代码: #include <stdio.h>#inc ...

  4. 一步一步带你分析 requirejs

    详细源代码一共就2000多行,来看我这篇分析的同学应该都下载下来了,好了,话不多说,开始: 代码的开头就出现3个全局变量: requirejs, require, define var require ...

  5. Hive split分割后获取最后一段

    ----------------------------------------- 如果只看解决方法,直接看最后... ---------------------------------------- ...

  6. HTML5 canvas save()和restore()方法讲解

    我们尝试用这个连续矩形的例子来描述 canvas 的状态堆是如何工作的.第一步是用默认设置画一个大四方形,然后保存一下状态.改变填充颜色画第二个小一点的白色四方形,然后再保存一下状态.再次改变填充颜色 ...

  7. linux应用之ntpdate命令联网同步时间

    当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间. 安装:yum install ntpdate ntpdate简单用法: # ntpdate ip # ntpdate 210 ...

  8. 实现stack 加上·getMin功能 时间复杂度为O(n)

    package com.hzins.suanfa; import java.util.Stack; /** * 实现stack 加上·getMin功能 时间复杂度为O(n) * @author Adm ...

  9. 唐诗掠影:基于词移距离(Word Mover's Distance)的唐诗诗句匹配实践

    词移距离(Word Mover's Distance)是在词向量的基础上发展而来的用来衡量文档相似性的度量.   词移距离的具体介绍参考http://blog.csdn.net/qrlhl/artic ...

  10. Struts2 - 异常处理: exception-mapping 元素

    异常处理: exception-mapping 元素 在action方法中添加 int i=1/0; 请求action后,结果为: 在struts.xml中添加异常处理:exception-mappi ...