C++中指向对象的常指针和指向常对象的指针
指向对象的常指针
将指向对象的指针变量声明为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++中指向对象的常指针和指向常对象的指针的更多相关文章
- 父类构造函数中的this指针在子类构造对象后,这个this指针指向什么
子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分.因此子类对象的this指针是指向子类对象自己.
- c++中指针常量,常指针,指向常量的常指针区分
const char * myPtr = &char_A;//指向常量的指针 char * const myPtr = &char_A;//常量的指针 const char * con ...
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, con ...
- cocos2dx中CC_CALLBACK_1等宏中this指针实际指向
首先看代码,我在Helloworld中添加两个函数. void HelloWorld::addTarget(){ Size visibleSize = Director::getInstance()- ...
- C++中const修饰基本数据类型、指针、引用、对象
const修饰基本数据类型 #include <iostream> using namespace std; void main(){ const int a = 1; const cha ...
- C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址
C++反汇编第三讲,反汇编中识别虚表指针,以及指向的虚函数地址 讲解之前,了解下什么是虚函数,什么是虚表指针,了解下语法,(也算复习了) 开发知识为了不码字了,找了一篇介绍比较好的,这里我扣过来了,当 ...
- 深入理解JS函数中this指针的指向
函数在执行时,会在函数体内部自动生成一个this指针.谁直接调用产生这个this指针的函数,this就指向谁. 怎么理解指向呢,我认为指向就是等于.例如直接在js中输入下面的等式: console.l ...
- C++反汇编第二讲,反汇编中识别虚表指针,以及指向的虚函数地址
讲解之前,了解下什么是虚函数,什么是虚表指针,了解下语法,(也算复习了) 开发知识为了不码字了,找了一篇介绍比较好的,这里我扣过来了,当然也可以看原博客链接: http://blog.csdn.net ...
- c++中关于值对象与其指针以及const值对象与其指针的问题详细介绍
话不多说,先附上一段代码与运行截图 //1 const int a = 10; //const 值对象 int *ap = (int *)&a;//将const int*指针强制转化为int* ...
随机推荐
- python内置方法补充all
all(iterable) 版本:该函数在python2.5版本首次出现,适用于2.5以上版本,包括python3,兼容python3版本. 说明:如果iterable的所有元素不为0.''.Fals ...
- Docker 数据管理-Volumes
Volumes是Docker最为推荐的数据持久化方法. Volumes have several advantages over bind mounts: Volumes are easier to ...
- nginx源码中upstream的主要流程
upstream 即上游的意思,是一个想对到概念,从客户端到中间的网络链路到服务器到链路中,可以将越接近客户到设备越理解成下游,相反到为上游,所以如果只有一个upstream,可以将其为理解成转发客户 ...
- Codeforces Round #256 (Div. 2) E. Divisors 因子+dfs
E. Divisors time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- django 实现分页功能
分页效果: 视图代码: # -*- coding: utf-8 -*- from django.shortcuts import render,get_object_or_404 from djang ...
- Delphi中TList类应用
在DELPHI中指针最常见的就是和类TLIST结合起来使用.下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识. 代码的功能是使用指针和Tlist来生成一个牌串,并 ...
- 分享知识-快乐自己:FastDFS 图片服务器的搭建
使用一台虚拟机来模拟,只有一个Tracker.一个Storage服务,配置nginx访问图片. 1):安装依赖包 yum -y install zlib zlib-devel pcre pcre-de ...
- python自动化开发学习 I/O多路复用
python自动化开发学习 I/O多路复用 一. 简介 socketserver在内部是由I/O多路复用,多线程和多进程,实现了并发通信.IO多路复用的系统消耗很小. IO多路复用底层就是监听so ...
- HihoCoder1339 Dice Possibility(概率DP+母函数)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 What is possibility of rolling N dice and the sum of the numb ...
- 【LeetCode】024. Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...