当前位置: 首页 > 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.dnsts.com.cn/news/160535.html

相关文章:

  • 找别人做的网站怎样修改济南网站建设团队
  • 没有网站如何做adsense企业网站那几点重要
  • 洛阳房产网seo网站优化工具大全
  • 海淀做网站的公司代码素材网站
  • 建立网站需要什么技术网页设计课程速成班
  • 口碑好门户网站开发关联词有哪些类型
  • 网站建设寻找可以途径做行业导航网站
  • 北京市城乡建设学校网站专业设计自学网站
  • 华夏名网修改网站信息什么网站可以做字体效果图
  • 昆山市建设局网站6ftp wordpress
  • 湖北省两学一做网站发布友情链接
  • 南通医院网站建设高端网站建设过程
  • 网站建设ftp软件怎么建立公司网站?
  • 惠州品牌网站建设公司哪里有怎么给网站添加音乐
  • 泉州网站建设报价深圳集团网站建设专业公司
  • 贵州省城乡建设局网签网站营销型网站建设与网页设计
  • 环保网站模板WordPress的手机菜单键
  • 济南专业网站建设咨询北京网站开发服务商
  • 与知名网站互连网站seo其应用
  • 技术支持 重庆网站包装设计案例分析
  • 孝感高新区建设局网站湖南竞网科技有限公司
  • 网站开发及流行框架郑州网站建设公司怎么选
  • 网站建设首选智投未来1网页版扫一扫二维码
  • 企业名录网站 优帮云网站怎么添加假备案号
  • 买网站服务器太仓家政保洁公司
  • 固安做网站凡科快图一键抠图
  • 女装网站建设文献综述歌曲伴奏在线制作网站
  • 订阅号做微网站需要认证吗注册公司网上申请
  • 地方门户网站搭建系统做网站有啥软件
  • 俄罗斯免费网站推广抖音seo怎么做的