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

黑龙江省建设监理协会网站手机网站免费做app

黑龙江省建设监理协会网站,手机网站免费做app,台州网站制作价格,seo优化技巧目录 一、问题背景 二、错误分析 三、警告分析 一、问题背景 在initial value of reference to non-const - C Forum看到如下有问题的代码&#xff0c;编译如下代码看看 #include <iostream> #include <cmath>int g(double x) { return std::floor(x); } int&a…

目录

一、问题背景

二、错误分析

三、警告分析


一、问题背景

在initial value of reference to non-const - C++ Forum看到如下有问题的代码,编译如下代码看看

#include <iostream>
#include <cmath>int g(double x) { return std::floor(x); }
int&& i(double x) { return g(x); }void Do_Type_deduction()
{auto& li = i(8.8);
}   int main()
{Do_Type_deduction();std::cout<<"exit"<<std::endl;return 0;
}

g++编译

test.cpp: In function ‘int&& i(double)’:
test.cpp:5:29: warning: returning reference to temporary [-Wreturn-local-addr]5 | int&& i(double x) { return g(x); }|                            ~^~~
test.cpp: In function ‘void Do_Type_deduction()’:
test.cpp:9:17: error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’9 |     auto& li = i(8.8);|                ~^~~~~

cpp.sh中编译

main.cpp:5:28: warning: returning reference to local temporary object [-Wreturn-stack-address]
int&& i(double x) { return g(x); }^~~~
main.cpp:9:11: error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'auto& li = i(8.8);^    ~~~~~~
1 warning and 1 error generated.

二、错误分析

error: cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’和error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'的含义是一样的。代码第9行中的i(8.8)返回的是int的右值引用。li类型会被推导为int&类型,是一个未加const的左值引用。c++语法规定,未加const的左值引用是不能绑定到右值的,所以第9行报错。这一条规则也是c++类拷贝构造函数和类赋值运算符重载函数的形参要加const修饰的理由,因为从右值对象拷贝构造新对象和从右值对象赋值到目标对象的需求是存在的。

c++类拷贝构造函数和类赋值运算符重载函数的形参为什么要加const?-CSDN博客

所以只需将第9行改成const auto&li = i(8.8);编译报错即可解决。

三、警告分析

再来看代码第5行的警告。

在代码中,函数i被定义为返回一个右值引用int&&。g(x)调用返回的是一个int类型的临时对象(右值)。右值引用通常用于绑定到临时对象,并且允许对这些临时对象进行移动操作。但是不能直接将一个临时对象的右值引用返回,因为当函数返回时,这个临时对象的生命周期就结束了,返回的右值引用将变成一个悬空引用,指向一个已经被销毁的对象,这会导致未定义行为。

在c++中,函数返回右值引用时,通常是为了移动语义,即返回一个对象的所有权,但前提是这个对象的生命周期要能够延长到函数外部。而这里g(x)返回的是一个临时值,它的生命周期在i函数返回时就结束了。


文章转载自:

http://bt6mdYhC.nfpkx.cn
http://TZ0jII8w.nfpkx.cn
http://trW1EnHg.nfpkx.cn
http://sf0bwHrT.nfpkx.cn
http://SkZCBw2z.nfpkx.cn
http://wlgGq7ND.nfpkx.cn
http://hoca40i1.nfpkx.cn
http://ano9R4eT.nfpkx.cn
http://0JyV7o6f.nfpkx.cn
http://3eNdm4sB.nfpkx.cn
http://3Fccac3w.nfpkx.cn
http://MFnghZd6.nfpkx.cn
http://ehqOt0ui.nfpkx.cn
http://Nf54dlsG.nfpkx.cn
http://exhEYzxl.nfpkx.cn
http://jiwdvf84.nfpkx.cn
http://cRrz28bV.nfpkx.cn
http://6F2RyY8z.nfpkx.cn
http://X6kaY0m4.nfpkx.cn
http://oNBWOUda.nfpkx.cn
http://ojLZJSw2.nfpkx.cn
http://JMlQQQMP.nfpkx.cn
http://Zn0pC45Q.nfpkx.cn
http://8vGiuvAt.nfpkx.cn
http://xixyZSLt.nfpkx.cn
http://2xBZtB1L.nfpkx.cn
http://rlGwk5BM.nfpkx.cn
http://vCDvgEjt.nfpkx.cn
http://VxhJXqsg.nfpkx.cn
http://eEBi2Pq0.nfpkx.cn
http://www.dtcms.com/wzjs/662398.html

相关文章:

  • 百度搜不倒公司网站wordpress时间插件下载地址
  • 青岛网站建设方案案例商城类网站总体功能策划
  • 东莞建站网站建设产品推广wordpress 外链转内链
  • 高端品牌网站建设建议公司网站建站哪个系统好用
  • 电子商务网站的建设及规划推广小程序拿佣金
  • 校园网站管理系统梅州站改造高铁站
  • 自助建站视频网站建设小程序怎么挂失
  • 嘉兴企业网站模板连锁销售网站制作
  • 深圳网站建设有免费的吗网页制作与网站建设06627
  • 建设手机网站平台江西建设银行分行网站
  • 网站中英文切换怎么做个性化网站开发
  • 做外贸一般去什么网站找客户青岛市区商场黄页
  • 福建省建设相关网站wordpress建一个网站吗
  • 网站积分商城该怎么建立网站建设佛山
  • 大气微电影类网站织梦模板完整版阿里云域名 设置网站
  • 邯郸有设计网站的吗购物网站制作样例
  • 哈尔滨免费自助建站模板北京网站设计引流微信hyhyk1
  • 淘宝客做网站推广比较实用的h5网页建设网站
  • 电子商务网站建设期末试卷答案中英西班牙网站建设
  • 房山营销型网站制作开发如何查看网站的关键词
  • php音乐网站设计北京网站建设市场
  • 网站建设报价 福州石家庄网站优化多少钱
  • 手机网站推荐导航页阿里云建站费用
  • 个人网站建设的背景做网站前的准备什么
  • 品牌网站开发公司网站怎么做好 优帮云
  • 申请关闭网站厦门建站比较好的公司
  • 韩国明星都在那个网站做直播东莞市网站公司
  • 做网站的是不是程序员网站的结构与布局优化
  • 中小企业建站是什么广州一起做网店网站官方
  • 做二手车网站需要什么手续静态网页设计案例