C++语法问题??

songgz 2004-12-08 10:13:28
下面这两个语句是什么意思?有什么区别呢?
CFoo& pI = (CFoo*) this;

CFoo* pI = static_cast<CFoo*>this;
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaozi2003 2004-12-08
  • 打赏
  • 举报
回复
To: jalang(冻天)
你说的不错,CFoo* pI = static_cast<CFoo*>this
在内存中分配一个地址变量pI,他的值和this相同,可以利用pI->来修改类中的各个结构或者变量.但如果直接修改pI本身指向,则不影响this 比如pI=NULL; 那么不影响this! 所以我说的也没有错

如果用&引用的话,修改了pI指向,则this也被修改了
truewill 2004-12-08
  • 打赏
  • 举报
回复
CFoo* pI = static_cast<CFoo*>this;

这句话等于跟编译器说: 老子就是要改变类型, 你别管

其实跟 (CFoo*)this 一样
polarman 2004-12-08
  • 打赏
  • 举报
回复
CFoo& pI = (CFoo*) this;
这句有语法错误
应为CFoo& pI = (CFoo)(*this);
jalang 2004-12-08
  • 打赏
  • 举报
回复
CFoo* pI = static_cast<CFoo*>this; 修改pI不等于修改了this 指针传值
这句没看懂!!难道用pI修改了比如数据成员.this的数据成员不会改变吗??
piaozi2003 2004-12-08
  • 打赏
  • 举报
回复
CFoo& pI = (CFoo*) this; 修改pI值就等于修改了this 引用
CFoo* pI = static_cast<CFoo*>this; 修改pI不等于修改了this 指针传值

另外就是强制转换的区别

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧