当前位置: 首页 > news >正文

深圳松岗 网站建设wordpress又拍

深圳松岗 网站建设,wordpress又拍,长春建站优化加徽信xiala5,第三方小程序平台为了能让大家看清 this 指针的本质#xff0c;我们会先讲一点 C 的历史——C 程序到C程序的翻译过程。C 程序到C程序的翻译C 是在C语言的基础上发展而来的#xff0c;第一个 C 的编译器实际上是将 C 程序翻译成C语言程序#xff0c;然后再用C语言编译器进行编译。C语言没有类…为了能让大家看清 this 指针的本质我们会先讲一点 C 的历史——C 程序到C程序的翻译过程。C 程序到C程序的翻译C 是在C语言的基础上发展而来的第一个 C 的编译器实际上是将 C 程序翻译成C语言程序然后再用C语言编译器进行编译。C语言没有类的概念只有结构函数都是全局函数没有成员函数。翻译时将 class 翻译成 struct、对象翻译成结构变量是显而易见的但是对类的成员函数应该如何翻译对myCar.Modify();这样通过一个对象调用成员函数的语句又该如何翻译呢C语言中只有全局函数因此成员函数只能被翻译成全局函数myCar.Modify();这样的语句也只能被翻译成普通的调用全局函数的语句。那如何让翻译后的 Modify 全局函数还能作用在 myCar 这个结构变量上呢答案就是引入“this 指针”。下面来看一段 C 程序到C 程序的翻译。C程序class CCar{public:int price;void SetPrice(int p);};void CCar::SetPrice(int p){price p;}int main(){CCar car;car.SetPrice(20000);return 0;}翻译后的C程序(此程序应保存为扩展名为 .c 的文件后再编译)struct CCar{int price;};void SetPrice(struct CCar* this, int p){this-price p;}int main(){struct CCar car;SetPrice(car, 20000);return 0;}可以看出类被翻译成结构体对象被翻译成结构变量成员函数被翻译成全局函数。但是C程序的全局函数 SetPrice 比 C 的成员函数 SelPrice 多了一个参数就是struct CCar *this。car.SetPrice(20000);被翻译成SetPrice(car, 20000);后者在执行时this 形参指向的正是 car 这个变量因而达到了 SetPrice 函数作用在 car 变量上的效果。思考题以上翻译还不完整因为构造函数的作用没有体现出来。思考构造函数应该如何翻译。另外静态成员函数和静态成员变量应如何翻译this 指针的作用实际上现在的C编译器从本质上来说也是按上面的方法来处理成员函数和对成员函数的调用的即非静态成员函数实际上的形参个数比程序员写的多一个。多出来的参数就是所谓的“this指针”。这个“this指针”指向了成员函数作用的对象在成员函数执行的过程中正是通过“Ihis指针”才能找到对象所在的地址因而也就能找到对象的所有非静态成员变量的地址。下面程序的运行结果能够证明这一点#include using namespace std;class A{int i;public:void Hello(){ cout hello endl; }};int main(){A* p NULL;p - Hello();}程序的输出结果是hello在上面的程序中p 明明是一个空指针为何通过它还能正确调用 A 的成员函数 Hello 呢因为参考上面 C 到C程序的翻译P-Hello()实质上应该是Hello(p)在翻译后的 Hello 函数中cout 语句没有用到 this 指针因此依然可以输出结果。如果 Hello 函数中有对成员变量的访问则程序就会出错。C 规定在非静态成员函数内部可以直接使用 this 关键字this 就代表指向该函数所作用的对象的指针。看下面的例子#include using namespace std;class Complex {public:double real, imag;Complex(double r, double i) : real(r), imag(i) {}Complex AddOne(){this-real;return *this;}};int main(){Complex cl(1, 1), c2(0, 0);c2 cl.AddOne();cout c2.real , c2.imag endl; //输出 2,1return 0;}第 9 行this 指针的类型是 Complex*。因为 this 指针就指向函数所作用的对象所以 this-rear 和 real 是完全等价的。*this代表函数所作用的对象因此执行第 16 行进入 AddOne 函数后*this实际上就是 c1。因此的 c2 值会变得和 c1 相同。因为静态成员函数并不作用于某个对象所以在其内部不能使用 this 指针否则这个 this 指针该指向哪个对象呢
http://www.huolong8.cn/news/144671/

相关文章:

  • 建设网站一般要多久网络推广引流是做什么工作
  • 营销型网站的特点网络技术学习网站
  • 明年做哪些网站致富刷seo快速排名
  • asp公司网站网站是新媒体平台吗
  • 泉州建站公司模板莆田人做的网站
  • 江苏建设人才网官方网站学做网站论坛插件
  • 专业做网站公司怎么样网站asp文件只读
  • 在线海报设计网站网页制作哪家服务好
  • 改则网站建设wordpress quizzin
  • 网站建设模版唐山网站建设求职简历
  • 旅游网站专业化建设的要点百度本地推广
  • 手机网站设计制作服务快速建站哪个平台好
  • 美丽乡村建设网站模板网站建设企业建站模板
  • 微信网站用什么软件做百度应用
  • 普通电脑可以做网站服务器广州音乐制作公司
  • 网站布局优化策略电子商务网站建设步骤有什么
  • 网站卡的原因服务器网站部署
  • 高端网站设计制网络服务端口
  • 有什么网站建设软件秦皇岛建设工程
  • 做电脑系统哪个网站徐州网站建设xzqjwl
  • 做网站需要写代码吗吕梁网页制作公司
  • 龙岩网站设计制作wordpress 4.9.2 中文
  • 运营最好的网站购物网站最重要的功能
  • godaddy中文网站开发网站商务通弹出窗口图片更换设置
  • 泰州网站建设服务公司建设网站文献
  • 优质院校 建设网站网站建设熊掌号
  • 自己做的网站根目录哪里找到途牛旅游网站建设背景
  • 网站建设制作开发 小程序开发定制 软件系统开发电脑免费安装wordpress
  • 可以做兼职翻译的网站网站建设中最重要的环节是什么
  • 房管局备案查询网站注册企业公司流程及费用