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

高端品牌网站建设兴田德润可信赖做网站要求什么条件

高端品牌网站建设兴田德润可信赖,做网站要求什么条件,详情页用什么软件制作,东莞市住房和城乡建设局网上办事平台文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date#xff0c;下面这段代码执行的结果是什么呢#xff1f; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v… 文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date下面这段代码执行的结果是什么呢 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void print(){cout _year - _month - _day endl;} private:int _year; int _month; int _day; }; int main() {Date d1, d2;d1.Init(2022, 5, 11);d2.Init(2022, 5, 12);d1.print();d2.print();return 0; }可以看到分别打印出了两个日期它是怎么知道改打印哪个的 我们来分析一下先看一下汇编代码看一看 我们看到上面的代码是调用的同一个函数那么编译器是如何知道那两个日期的 其实C里有一个隐形的this指针在微软的官方文档也有说明 在使用函数的时候其实里面传了一个地址然后有一个隐的this指针来接收 原形是这样 那为什么这里报错了呢因为不必要写这个是隐含的~~我们可以直接在类里面使用 二、this指针的特性 刚刚上面也给你看了原形细心的烙铁已经发现了这个this指针是有一个const修饰的而且这个const是在*的右边 这里的const修饰我在C语言的指针部分已经讲过了—指针章节 下面我们回忆一下~ 到这里就得出的this本身是不被修改的但是做指向的值是可以被修改 我们可以在类中打印一下this指针的地址再打印一下d1和d2的地址我们来看一下 得到结果就是this指针指向一个指向当前对象的指针 我们还可以下面这样是不会报错的但是不能向上面直接在形参就写上 特点 1、形参和实参的位置我们不能显示写 2、函数内部可以使用 最后总结一下 this指针的类型类型 *const即成员函数中不能给this指针赋值。只能在“成员函数”的内部使用this指针本质上是“成员函数”的形参当对象调用成员函数时将对象地址作为实参传递给this形参。所以对象中不存储this指针。this指针是“成员函数”第一个隐含的指针形参一般情况由编译器通过ecx寄存器自动传递不需要用户传递 【面试题】 this指针存在哪里 a、堆 b、栈 c、静态区 d、常量区 e、对象里面 首先排除e因为我们知道在算类里的对象的时候是没有算this指针的大小所以排除eC的const变量不是在常量区可以看到这两个地址是挨着的 那么什么在常量区呢是const修饰的值在常量区这个指针变量在栈区指向了这个常量区的字符串的首字符所以d也就排除 c就更不可能了static和全局的才在静态区 a也可以排除因为malloc的才在堆这里不是malloc所以排除 最后就是在栈上因为是一个形参有些编译比如vs可能会用寄存器存储。不同的编译器放在不同的位置可能是栈也可能是寄存器(VC编译器是放在ECX中其它编译器有可能不同也就是成员函数的其它参数正常都是存放在栈中。而this指针参数则是存放在寄存器中。) 打开汇编我们也可以看到这里的lea就是load effective address【加载有效地址】是存在ecx的值加载到 [d1] 里 this指针可以为空吗 下面我们来看两道题来解决这个问题的答案~ 第一道下面程序编译运行结果是 A、编译报错 B、运行崩溃 C、正常运行 class A { public:void Print(){cout Print() endl;} private:int _a; }; int main() {A* p nullptr;p-Print();return 0; }已经完美运行了因为我这里没有访问类里的对象所以可以正常运行 第二道下面程序编译运行结果是 A、编译报错 B、运行崩溃 C、正常运行 class A { public:void PrintA(){cout _a endl;} private:int _a; };int main() {A* p nullptr;p-PrintA();return 0; }这里引发了空指针因为我需要打印这里的_a就要找到那块空间 也就可以写成这样this指针是空指针解引用就会报错 所以this指针是可以为空的只要在成员函数内部不访问其内容程序可以正常执行的。 最后本篇文章介绍了C中隐含的this指针特性看完希望你学有所成
http://www.pierceye.com/news/390593/

相关文章:

  • 阜蒙县自治区建设学校网站汉中市住建局建设厅网站官网
  • windows 2008 iis怎么搭建网站手机网站模板建站
  • 优设网官网首页seo教程搜索引擎优化
  • 做问卷给钱的网站页面设计结课总结
  • 洛阳集团网站建设wordpress 深度优化
  • python做网站缺点湛江市建网站
  • 济南网站建设(选聚搜网络)在线购物网站建设
  • 珠海专业做网站公司昆明搜索引擎推广
  • 阿里云 建设网站怎么样百度推广一级代理商名单
  • 湛江网站制作网站吉林省四平市网站建设
  • 酒店网站建设公司推广方法有哪些
  • 网站建设免备案免费空间wordpress在线教育主题购买
  • 网站后台验证码不显示成都市建设工程施工安监站网站
  • 榆林网站优化做图的网站
  • 在微信中做网站淄博 网站seo优化
  • 黑龙江省建设协会网站首页怎么用word做网站
  • 企业网站网站建设价格wordpress阶梯插件
  • 企业品牌建设方案范文roseonly企业网站优化
  • 电影资源采集网站咋做在百度上怎么建立网站吗
  • 好的企业网站设计方案中小企业网站建设 论文
  • 毕设网站建设论文网站开发合同履约
  • 织梦贷款网站源码备案过的网站换域名
  • 南宁网站seo顾问广州正规的免费建站
  • 温州教育网站建设建网站 陕西牛人网络科技
  • 青岛网站建设eoe世界杯现场直播
  • com网站建设中社交app定制开发
  • 阅读网站建设简易做海报网站
  • 上海企业网站建设推荐wordpress登录插件
  • 做网站的人联系电话可做产品预售的网站
  • 内部网络网站怎么做微信公众号推文制作软件