- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++ 中的指针用法总结
出处:多特软件站时间: 2011-06-24 人气: 45 我要提问我来说两句
核心提示: C++ 程序设计重要基础就是类和对象,对象指针是很重要的一部分
C++ 程序设计重要基础就是类和对象,对象指针是很重要的一部分,包括指向对象的指针、指向对象
成员的指针、 this 指针、指向对象的常指针、指向常对象的指针等。
1 、指向对象的指针
定义:对象空间的起始地址就是对象的指针。
说明:在建立对象时,编译系统就为每个对象分配一定的存储空间以存放其成员,不过注意,在一般
情况下不同对象的数据存储单元中存放的数据成员是不相同,而不同对象的函数代码却是相同的,也就是
说,它们的函数代码是共享的。这时我们可以定义一个指针变量用来存放对象的指针。
定义指向类对象的指针变量的一般形式是:
类名 * 对象指针名 ;
如对于与个 Time 类对象,我们可以有:
我们就可以通过对象指针访问对象和对象的成员, 假如所定义的类中有数据成员 hour 、minute 、sec,
成员函数有 gettime() ,则
p-hour 与(*p).hour 等价即为 p 指向对象中的 hour 成员,相当于 t.hour
(*p).gettime() 即为 p 指向对象中的成员函数 gettime(), 相当于 t.gettime()
也可以用如下形式:
p-hour 和 p-gettime() 和上面是等价的。
2 、指向对象成员的指针
(1) 指向对象数据成员的指针
在 C 中我们学过指向普通变量的指针变量,在 C++ 中定义指向对象数据成员的指针变量的方法和定
义指向普通变量的指针变量方法相同,其一般形式为:
数据类型名 * 指针变量名 ;
如:
(2) 指向对象成员函数的指针
定义指向对象成员函数的指针变量和定义指向普通函数的指针变量不同。
在定义指向普通函数的指针变量时我们可以这样定义:
然而编译系统要求在将函数地址赋给指针变量时必须满足三个条件:
函数参数类型及个数要匹配
函数返回值的类型要匹配
所属的类要匹配
显然在上面的 p 与类是无关的。为了满足第三条,我们可以为指针指定类,故定义指向对象成员函数
的指针变量一般形式为:
数据类型 ( 类名 ::* 指针变量名 )( 参数表列 );
可以让指针指向公用的成员函数,如:
注意:因为成员函数不存放在对象空间中,多个同类对象共享此成员函数代码,所以在将成员函数的
入口地址赋给指针变量是应写成:
指向对象成员函数的指针变量 = 类名 :: 成员函数名 ;
在成员函数名后面没有 (), 如果写成 p=Time::gettime() 是错误的。 [nextp
3 、this 指针
在每个成员函数中都包含了一个特殊的指针,称为 this ,它是指向本类对象的指针,它的值是当前被调用
成员函数所在对象的起始地址。之所以有这个指针,是因为为了保证同类的不同对象的成员函数引用的是
指定对象中的数据成员,它是系统自动实现的。
如定义一个求体积的函数
假如已经定义了对象 t ,当调用成员函数 t.vol() 时,编译系统就把对象 t 的起始地址赋给 this 指针,
于是在成员函数引用数据成员时,根据指针 this 就可以引用到对象 t 的数据成员。所以 C++ 把上面的函
数处理成
由于 this 的值是当前被调用成员函数所在对象的起始地址,所以可以写成
所以在调用成员函数 t.vlo() 时,实际的调用方式为 t.vol(t), 不过对象 t 的地址传给 this 指针是由系
统自动完成的,不需人为加上。
4 、指向对象的常指针
将指向对象的指针变量声明为 const 型且进行处始化,这样指针值始终保持为其初值,不能改变其指
向。
如:
由上面我们可以看出定义指向对象的常指针的一般形式为:
类名 *const 指针变量名 = 对象的起始地址 ;
注意:指向对
您可能关注的文档
- c++图书信息管理系统(附源码)归纳.pdf
- C++语言程序设计练习题分享.pdf
- C++语言程序设计上机实验借鉴.pdf
- C++语言的发展史分享.pdf
- C++语言学习过借鉴.pdf
- c++运算符的重载习题答案实用.pdf
- C++运算优先级参考.pdf
- C++指针常量、常量指针的区别详细说明实用.pdf
- C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别实用.pdf
- c++中的引用与指针的区别归类.pdf
- 新的一年工作展望.docx
- 医生年终个人工作的述职报告(3篇).docx
- 2023年消防设施操作员之消防设备中级技能考前冲刺练习题附答案详解.docx
- 2022-2023年环境影响评价工程师之环评技术导则与标准通关练习题包括详细解答.docx
- 2023年中级注册安全工程师之安全生产管理考前冲刺检测卷和答案.docx
- 2023年中级银行从业资格之中级银行管理考前冲刺测试卷提供答案解析.docx
- 2023年公共营养师之二级营养师通关模拟考试试卷附带答案.docx
- 证券分析师之发布证券研究报告业务考前冲刺模拟题库.docx
- 2022-2023年二级建造师之二建建设工程法规及相关知识综合提升测试卷附答案.docx
- 2023年二级建造师之二建机电工程实务通关模拟考试试卷提供答案解析.docx
文档评论(0)