资讯详情

C++ 左值右值学习

📅 2026/9/15 9:43:59 | 华诺云谱 👁 阅读
C++ 左值右值学习
int x 10;代码学习#includeiostream#includecstdio#includeutility// std::moveclasscircle{public:circle(){puts(默认构造);}circle(constcircleother){puts(拷贝构造);}circle(circleother)noexcept{puts(移动构造);}};voidconsume(circle c){puts(进入 consume);}voidinspect(constcirclec){puts(进入 inspect);}voidaccept(circlec){puts(进入 accept);}intmain(){std::cout --1-- std::endl;circle a;// 默认构造std::cout --2-- std::endl;circleb(a);// 拷贝构造std::cout --3-- std::endl;circlec(std::move(a));// 移动构造std::cout --4-- std::endl;consume(a);// 拷贝构造参数 cstd::cout --5-- std::endl;consume(std::move(a));// 移动构造参数 cstd::cout --6-- std::endl;inspect(std::move(a));// 只绑定引用不调用移动构造std::cout --7-- std::endl;accept(std::move(a));// 只绑定引用不调用移动构造std::cout --8-- std::endl;circlerefstd::move(a);// 只绑定引用circleb2(ref);// 拷贝构造。注意虽然 ref 的声明类型是 circle但表达式 ref 是左值。std::cout --9-- std::endl;circlec2(std::move(ref));// 移动构造std::cout --10-- std::endl;circle a2circle();return0;}输出结果为--1--默认构造--2--拷贝构造--3--移动构造--4--拷贝构造 进入 consume--5--移动构造 进入 consume--6--进入 inspect--7--进入 accept--8--拷贝构造--9--移动构造--10--默认构造
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。