指向对象的常指针和指向常对象的指…

原创 2013年12月02日 15:34:12
1、指向对象的常指针
     把指向对象的指针变量声明为const型并将之初始化,这样指针始终保持为初值,不能改变,也就是说它的指向始终不会改变。
     定义指向对象常指针格式:  类名  * const 指针变量名 = &对象名(对象地址);

     例如:Person p("zhangsan",20),p2;   //定义对象
   Person * const p3 = &p;    //const位置在指针变量名前面,指定p3为常量。指向p1,指向不会再改变。
          p3  = &p2;   //这条语句错误,因为const修饰的变量一旦赋值,其值不会再改变。   
    在什么情况下使用指向对象的常指针呢?
        想要实现一个指针固定地与一个对象相联系也就是让这个指针始终指向一个对象,那么我们就将定义一个指向对象的常指针。这样做的好处是:在编程过程中防止误操作,增加安全性。

2、指向常对象的指针变量
       什么是指向对象的指针变量,那什么是指向常变量的指针变量?
       下面是定义了一个指向常变量的指针变量:
           const char *p;
  如何理解上边的定义?我们需要注意的是在定义指向常变量的时,const在数据类型的最左边,与数据类型紧连,表示指针变量p指向的char变量是常变量,不能通过p来改变其值。
        定义指向常变量的指针变量的一般格式:const 类型名 * 指针变量名;对指向常变量的指针变量有以下几个说明:
        1、如果一个变量被声明常变量,只能使用指向常变量的指针变量只能使用指向常变量的指针变量指向它,而不能用一般的指针变量指向它。
2、指向常变量的指针变量不仅可以指向常变量,还可以指向未被声明为常变量的变量,但是注意一点:这个指针变量不能修改该变量的值。
3、如果函数的形参是指向非const的变量指针,实参只能用非const变量的指针;如果函数的形参是指向const的变量指针,也就是说在执行的过程中不能改变指针的指向,实参用const变量的指针,或非const的指针变量。

     以上理解指向常变量的指针变量,由此来理解指向常对象的指针变量,我们要注意两点:
1、当一个对象已被声明为常对象,这时,只能使用指向常对象的指针变量来指向它。
2、当定义了一个指向常对象的指针变量,而用它指向一个非const型的的对象,不能指针该改变期指向的对象。
3、指向常对象的指针变量最常用于形参,它的好处在于保护保护形参所指向的对象在函数执行的过程中指向不会被改变。


      在此记住一条规则:当希望在调用函数时,对象的值不会被改变,就要把形参定义为指向常对象的指针变量,同时用对象的地址作为实参(对象可以使const型的也可以是非const型的)。若希望对象不仅在函数调用的过程中不会改变,也要在程序的执行过程中不会改变,那就把对象定义为const型的。
 


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C++中指向对象的常指针和指向常对象的指针

指向对象的常指针 将指向对象的指针变量声明为const型,并使之初始化,这样指针值始终保持为其初始值,不能改变。 Time t1(10,12,15),t2; Time * const ptr1=&...

C++指向常对象的指针变量

为了更容易理解指向常对象的指针变量的概念和使用,首先了解指向常变量的指针变量,然后再进一步研究指向常对象的指针变量。下面定义了一个指向常变量的指针变量ptr:    const char *ptr; ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

指向对象的指针

//以前学这些内容的时候觉得好难理解啊,现在再看这些知识点,实在轻松了不少,敲一遍博客,感觉理解更深了: ) 我们知道,对象一经声明就为对象的成员分配存储空间,并调用其构造函数进行初始化,对象生存...

对象数组+对象指针+指向对象的指针

1.对象数组的每一个元素都是同类的对象class Student { public: Student(int score)//只有一个参数时 :_score(score){} ...

对象数组和指向对象的指针 指向类成员的指针

1 对象数组               对象数组是指数组元素为对象的数组。这种对象数组与其它数据类型的数组定义方式相同。如:       &...

对象数组和指向对象的指针 指向类成员的指针

1 对象数组               对象数组是指数组元素为对象的数组。这种对象数组与其它数据类型的数组定义方式相同。如:       &...

指向对象的常指针变量与指向常对象的指针变量区别

1 指向对象的常指针变量与指向常对象的指针变量区别   Time * const p; //指向对象的常指针变量  p的值(p的指向)不能修改   const Time *p;  //指向常对象的...

指针常量,常指针,指向常量的常指针

本文转载自http://www.cnblogs.com/CBDoctor/archive/2011/12/24/2300605.html 1.指针常量 从字面意思可以看出,指针是一个常...

const和指针(指向const对象的指针、const指针)

1.指向const对象的指针 const int *p; 这个p是一个指向int类型const对象的指针,const限定了指针p所指向的类型,而并非p本身。也就是说p本身并不是const。在定...

(一三一)指向对象的指针

类对象也可以像基本类型那样,使用指针。   假如有Man类的对象a,可以使用指针指向它: Man* c=&a; 这里表示指针c(类型为Man)指向对象a的地址(使用地址运算符&)。   也...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)