服务器之家

服务器之家 > 正文

C++中指向对象的常指针与指向常对象的指针详解

时间:2021-01-07 14:34     来源/作者: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型的对象的,但是指向的对象是不能通过指针来改变的。

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

C++中指向对象的常指针与指向常对象的指针详解

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

复制代码 代码如下:

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


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

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

复制代码 代码如下:

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

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部