C++ virtual
C++ virtual#includeusing namespace std;class base{public:base() { no=1; }virtual void show() { cout
最佳回答
一方面是和虚函数有关系:虚函数是为了提供多态功能而设计的,多态功能是动态决定的。而非虚函数是静态编译的时候就已经生成了,决定了的。另外一方面是和你的get函数有关系,你get函数中定义的是一个临时变量temp,这个变量在get函数执行完毕后,实际上已经析构掉了,但是如果是静态编译的内容,虽然变量析构了,但是对应的变量的成员变量的值还是固定的。即指向的地址部分内容应该还是不变的(如果是多线程程序,那么就不一定了)。而对于虚函数来说,就不一定了。一旦变量析构,那么对应的内容也就不存在了。所以,如果你把临时变量增加为static base temp,那么结果也是一样的了。其实你在编译的时候,编译器会提示你,你使用了一个临时变量返回引用,这个warning就是提示你,可能会得到预知的行为,但不阻碍程序的运行而已。
最新回答共有2条回答
-
2026-04-09 09:21:55儒雅的老鼠
回复一方面是和虚函数有关系:虚函数是为了提供多态功能而设计的,多态功能是动态决定的。而非虚函数是静态编译的时候就已经生成了,决定了的。另外一方面是和你的get函数有关系,你get函数中定义的是一个临时变量temp,这个变量在get函数执行完毕后,实际上已经析构掉了,但是如果是静态编译的内容,虽然变量析构了,但是对应的变量的成员变量的值还是固定的。即指向的地址部分内容应该还是不变的(如果是多线程程序,那么就不一定了)。而对于虚函数来说,就不一定了。一旦变量析构,那么对应的内容也就不存在了。所以,如果你把临时变量增加为static base temp,那么结果也是一样的了。其实你在编译的时候,编译器会提示你,你使用了一个临时变量返回引用,这个warning就是提示你,可能会得到预知的行为,但不阻碍程序的运行而已。
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
