游戏开发之C++指针的妙用(C++)

1.原理

  以下有一个类对象,请思考如何编写其访问方式。

 //Z代表class Z,且Z类是一个模板类Z<int> a;a->t = 200;

  a代表Z类的对象,但是注意a不是一个Z类指针且t为Z类内部的整型成员变量。
  首先肯定考虑使用->的运算符重载进行重载。代码如下:

 template<class T>class Z {public:T t;Z* operator->(){return this;}};int main(){Z<int> a;a->t = 2;return 0;}

  我们发现a对象在访问t的时候,使用的确实是->的运算符重载,但是我们仔细思考发现a->返回的是this,即对象指针。那么按照语法,此时a->t应该是this(类对象本身),是无法访问到t的,语法应该是不合法的。但是我们编译后会发现是合法的。也就是说明->实际上可以看做->->。即this->t。这就是C++指针的妙用。

2.案例

 template<class T>class Z {public:class  Z1{public:T t;};Z1* z = new Z1;Z1* operator->(){return z;}};int main(){Z<int> z;z->t = 200;return 0;}

游戏开发之C++指针的妙用(C++)相关推荐

  1. DirectX游戏开发之3D角色动起(下)

    DirectX游戏开发之3D角色动起(下) 直接先上图吧! 动作idle 动作attack 动作walk 动作run 看,多动作的模型搞下来了.原则上只要在此基础上略做修改就可以实现3d游戏的基本制作 ...

  2. DirectX游戏开发之2D文字的实现

    DirectX游戏开发之2D文字的实现 文字是承载信息最有效的载体之一,各种游戏程序都离不开文字的显示.对于3D文字来说,2D文字有其渲染的高效性和实现的简洁性. 2D文字的显示无论在写2D游戏还是在 ...

  3. 框架开发之Java注解的妙用

    框架开发之Java注解的妙用 注解的好处: 1.能够读懂别人写的代码,特别是框架相关的代码. 2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程 ...

  4. 开发中的“软”与“硬”:高画质移动游戏开发之道

    摘要:游戏的效果不仅与游戏引擎的渲染相关,与硬件优化也有千丝万缕的联系.一款基于芯片优化的移动游戏界面,甚至可以堪比视频游戏的视觉效果.高通半导体事业部资深经理刘晓光从软硬件两个层面分享了移动游戏开发 ...

  5. 游戏开发之U3D实现技能图标冷却的效果

    游戏开发之U3D实现技能图标冷却的效果 --本次使用的NGUI插件.     制作思路:NGUI插件里面有个UISprite组件,在它上面有个属性叫Type,改变相应的Type类型有不同的作用,本次使 ...

  6. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

  7. 游戏开发之U3D插件EasyTouch5.x使用

               游戏开发之U3D插件EasyTouch5.x使用 本篇只讲EasyTouch5.x的使用,不讲源码.本来想把EasyTouch5.x的使用手册翻译一遍,想来也是没那个时间. 第一 ...

  8. 微信小游戏开发之CocosCreator多分辨率场景适配方案

    主题 Cocos Creator不同手机分辨率的背景图像和场景内容适配 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文 ...

  9. libGDX游戏开发之Box2D(十四)

    libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...

  10. JAVA游戏开发之FPS精准控制

    目录 JAVA游戏开发之FPS精准控制... 1 1       概述... 2 1.1        编写目的... 3 2       FPS精准控制... 3 2.1        FPS描述. ...

最新文章

  1. Spring 源码分析(四) ——MVC(一)Web 基础
  2. 设置为true有什么区别_海绵与珍珠棉有什么区别?天南包装小编为您分析
  3. Git复习(四)之解决冲突
  4. Cannot find module 'express'
  5. 开发者说:当垃圾箱有了智慧
  6. 社区团购的终局是不是团长被抛弃?
  7. tp3.2中怎么访问分类及子分类下面的文章
  8. 《人月神话》读后感与读书笔记
  9. Android微信支付集成流程及其常见错误
  10. SveletJs学习——运动动画
  11. 华中科技大学计算机徐永兵,华中科技大学计算机学院导师及科研方向.doc
  12. 成都榆熙电子商务有限公司:拼多多店铺暂停运营有什么学问吗?
  13. 【工具使用】用高效的工具,完成高效的学习和科研
  14. json mysql 字段 默认值_MySQL新增JSON类型字段的使用总结
  15. 四川大学计算机学院人工智能专业排名,人工智能专业大学排名
  16. 全国计算机等级题库winrar,全国计算机等级考试试题和答案
  17. Ajax之父Jesse James Garrett在adaptive path工作坊上的演讲《用户体验的要素》
  18. [league/climate]一个功能健全的命令行功能操作库
  19. Truffle在ganache-cli部署合约
  20. A-Level数学P4:反证法题型变革趋势

热门文章

  1. 《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归
  2. bug2-Internal Error: Blas GEMM launch failed 问题
  3. 机器学习算法基础7-计算范围内素数的五种算法
  4. 从零实现深度学习框架——逻辑回归中的数值稳定
  5. 排序算法之——快速排序分析
  6. 如何在AI工程实践中选择合适的算法?
  7. 回顾2020年那些“领域第一本”,每一本都强烈推荐!
  8. IPv6带给互联网的新契机
  9. iPhone SDK开发基础之自定义仪表控件
  10. 《linux核心应用命令速查》连载一:accton:打开或关闭进程统计