VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 649|回复: 3

[交流] 对象与this指针

[复制链接]
97_avatar_middle
在线会员 成都老沈骑游 发表于 2017-8-24 08:47:07 | 显示全部楼层 |阅读模式
观察与思考下边的程序:
  1. #include "stdafx.h"
  2. #include<iostream>
  3. using namespace std;
  4. class neichun
  5. {
  6. private:
  7.         int a;

  8. public:
  9.         void dizhi()
  10.         {
  11.                 cout << &a << " " << this << endl;
  12.         }

  13. };

  14. int main()
  15. {
  16.         neichun x, y;
  17.         cout << &x << endl;
  18.         cout << &y << endl;

  19.         x.dizhi();
  20.         y.dizhi();

  21.         return 0;
  22. }
复制代码


x,y 都是 neichun 对象,语句 cout<<&x<<endl; 输出对象x的地址,同样语句 cout<<&y<<endl; 输出对象y的地址。对象地址本质含义是:定义一个类类型的对象后,编译器为每个对象数据成员分配内存。例如:当 neichun x; 后,整型变量 a 的地址是 0012FF7C,当 neichun y; 后整型变量 a 的地址是 0012FF78,所以同是整型变量 a,对象不同,内存地址不同。this 指针,对象不同,其地址值也不同。

程序运行结果是:
0012FF7C
0012FF78
0012FF7C 0012FF7C
0012FF78 0012FF78

Press any key to continue









评分

参与人数 1驿站币 +2 激情 +2 收起 理由
51_avatar_small Syc + 2 + 2 感谢分享!

查看全部评分





上一篇:关于C++中string的一些辅助扩展函数
下一篇:派生类对象思考

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-8-24 10:40:41 | 显示全部楼层
楼主分析的还是不错的。本身类 neichun 内部就一个成员变量 a,所以 neichun 类对象的地址就是成员变量 a 的地址,他们是一致的。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

08_avatar_middle
在线会员 SummerGull 发表于 2017-8-24 17:13:33 | 显示全部楼层
学习了。是的。了解C++内存分布对 编程很有帮助,

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

97_avatar_middle
ico_lz  楼主| 成都老沈骑游 发表于 2017-8-24 21:37:43 | 显示全部楼层
深刻理解例如:当 neichun x; 后,整型变量 a 的地址是 0012FF7C,当 neichun y; 后整型变量 a 的地址是 0012FF78,所以同是整型变量 a,对象不同,内存地址不同。this 指针,对象不同,其地址值也不同。对象x的整型变量 a空间和对象y的整型变量 a空间不同的,如果两个对象x和y共享整型变量 a 这个空间的话,析构函数析构对象y时,释放a空间。然后再析构对象x,a 这个空间已释放,程序就会出现错误。以后在学到类里面数据成员有指针的时候,学到拷贝构造函数的时候,会有体会的。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-10 13:27

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表