你真的懂 C++ 吗?来看看这 5 个问题吧!

news/2025/11/29 12:03:04/文章来源:https://www.cnblogs.com/TPPPP/p/19285880

移动语义

问题

以下的代码打印的结果是什么?

#include <iostream>
#include <utility>struct example
{example() = default;~example() = default;example(const example &) = default;example(example &&){std::cout << "move constructor invoked\n";}int data{0};
};int main()
{example e;e.data = 5;example new_e{std::move(e)};std::cout << e.data << '\n' << new_e.data;
}

答案

move constructor invoked
5
0

解释

std::move 仅仅是将 \(1\) 个左值表达式通过 static_cast<T&&> 转换到 \(1\) 个右值表达式,而右值构造函数仅仅是调用语义上的移动构造函数,并不代表实际一定产生移动操作,具体的移动操作由移动构造函数内对应的实现来实现,被移动后的对象处于 valid but unspecified 的状态

参考

https://en.cppreference.com/w/cpp/utility/move.html

Lambda表达式

问题

以下 \(2\) 段代码是否都能够正常编译?如果能正常编译,输出的结果分别是什么?

样例 1

#include <iostream>int main()
{int x{1}, y{2};auto f = [x, y]() {x = y;++y;};std::cout << x << ' ' << y;
}

样例 2

#include <iostream>int main()
{int x{1}, y{2};auto f = [&x, &y]() {x = y;++y;};std::cout << x << ' ' << y;
}

答案

样例 1

无法编译,必须追加 mutable 关键字,如下:

#include <iostream>int main()
{int x{1}, y{2};auto f = [x, y]() mutable {x = y;++y;};std::cout << x << ' ' << y;
}

打印的结果为:

1 2

样例 2

可以编译,打印的结果为:

2 3

解释

lambda 表达式其实是通过声明 \(1\) 个非联合非聚合匿名类来实现的,在这个类中,会按照捕获列表声明类内的私有成员,其默认生成的 operator()​ 函数被声明为 const​ ,除非你使用了 mutable 进行修饰

参考

https://en.cppreference.com/w/cpp/language/lambda.html

大括号初始化与列表初始化

问题

在C++ 14及以上标准中,以下的 a​ 、b 分别被推导为什么类型?

int main()
{auto a{1};auto b = {1};
}

答案

int​ 、std::initializer_list<int>

参考

https://en.cppreference.com/w/cpp/language/auto.html

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html

string_view

问题

以下代码是否会引发 UB ,为什么?

#include <iostream>
#include <string_view>std::string_view get()
{std::string s{"Hello"};return s;
}int main()
{std::cout << get();
}

答案

解释

std::string_view 返回 \(1\) 个字符串视图,其自身不持有字符串的所有权,如果视图返回了 \(1\) 个已经没有作用域的对象,就会引发未定义行为

具体的原因是 std::string​ 析构后,内部的 char*​ 失效,而 string_view 不拥有其指向的内存

结构化绑定

以下 \(2\) 段代码打印的结果分别是什么?

样例 1

#include <iostream>
#include <utility>using point = std::pair<int, int>;int main()
{point p{1, 2};auto [x, y] = p;std::cout << std::boolalpha << (&x == &p.first) << '\n';std::cout << std::boolalpha << (&y == &p.second);
}

样例 2

#include <iostream>
#include <utility>using point = std::pair<int, int>;int main()
{point p{1, 2};auto &[x, y] = p;std::cout << std::boolalpha << (&x == &p.first) << '\n';std::cout << std::boolalpha << (&y == &p.second);
}

答案

样例 1

false
false

样例 2

true
true

解析

结构化绑定实际上就是声明了新的变量,如果是拷贝,那么自然不会共享地址,但如果是引用,那么地址自然一样

参考

https://en.cppreference.com/w/cpp/language/structured_binding.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/980660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内专业诚信的小程序开发企业推荐

推来客网络是一家值得信赖的成都小程序开发公司,以优质服务与技术创新的完美结合,为企业提供专业的小程序开发解决方案。如果您正在寻找一家可靠的小程序开发公司,推来客网络无疑是您的最佳选择。您在选择小程序开发…

完整教程:十七、STM32的TIM(八)(TIM输入捕获)

完整教程:十七、STM32的TIM(八)(TIM输入捕获)2025-11-29 12:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

2025年比较好的布袋定制厂家推荐及选择建议

2025年比较好的布袋定制厂家推荐及选择建议 开篇:布袋定制行业背景与市场趋势 随着环保意识的增强和限塑政策的推行,布袋作为可重复使用的环保产品,市场需求持续增长。无论是企业品牌宣传、促销活动,还是文创产品…

2025 国内稳压器知名品牌最新排行榜

这份榜单不是流量堆砌的虚名,而是基于《中国电源产业发展白皮书 2025》与 SGS 第三方检测报告的精密校准,像给每个品牌装上了透明的「电力仪表盘」一、问题:当电压波动成为生产的「隐形风暴」 你有没有试过 —— 激…

【ArcMap】合并同一条线的多个部分

这种一般是由于点的连接方式不正确,需要重新打断有问题的点,重新按顺序连接 此时就只有一个部分了:

2025年靠谱的高端生态红茶/安全生态红茶推荐TOP生产厂家

2025年靠谱的高端生态红茶/安全生态红茶推荐TOP生产厂家 行业背景与市场趋势 近年来,随着消费者健康意识的提升,生态茶饮市场迎来爆发式增长。据《2024年中国茶叶消费趋势报告》显示,高端生态红茶年增长率达18%,…

2025年比较好的郑州注册公司客户好评推荐

2025年比较好的郑州注册公司客户好评推荐开篇:郑州注册公司服务行业现状与发展趋势随着郑州国家中心城市建设步伐加快,以及"放管服"改革持续深化,郑州市场主体数量呈现快速增长态势。2024年数据显示,郑州…

2025年线上英语培训机构权威推荐榜单:高性价比英语/成人英语培训/英语口语教育培训平台精选

在全球化进程加速的今天,线上英语培训已成为职业发展与学术提升的重要途径,选择合适的教育平台对学习效果至关重要。 随着在线教育技术的成熟和市场需求的扩大,中国在线英语培训市场呈现出蓬勃发展的态势。2025年在…

2025年整流二极管模块生产商权威推荐榜单:肖特基二极管/快恢复二极管/焊机二极管源头厂家精选

在电力电子技术快速发展的今天,整流二极管模块作为电能转换的核心部件,其性能直接影响着工业控制、新能源发电、电动汽车等领域的设备效率与可靠性。随着全球能源转型趋势加速,整流二极管模块市场规模预计将从2023年…

深入解析:关于 密码喷射

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年靠谱的精酿啤酒机/精酿啤酒设备最新TOP排名厂家

2025年靠谱的精酿啤酒机/精酿啤酒设备TOP排名厂家行业背景与市场趋势近年来,随着消费者对啤酒品质和个性化需求的不断提升,精酿啤酒市场呈现出爆发式增长态势。据行业数据显示,2024年中国精酿啤酒市场规模已突破200…

HTML------------------课程表

<!DOCTYPE html> <html><head><meta charset="utf-8"><title>课程表</title></head><body> <table border="1"><tr><th cols…

2025年专业的质量管理体系认证行业企业体系认证推荐榜

2025年专业的质量管理体系认证行业企业体系认证推荐榜行业背景与市场趋势随着全球经济一体化的深入发展和市场竞争的日益激烈,质量管理体系认证已成为企业提升管理水平、增强市场竞争力的重要手段。2025年,质量管理体…

2025年靠谱的树脂瓦厂家推荐及采购指南

2025年靠谱的树脂瓦厂家推荐及采购指南行业背景与市场趋势随着我国建筑行业的持续发展和乡村振兴战略的深入推进,树脂瓦作为一种新型环保建材,近年来市场需求呈现稳定增长态势。树脂瓦以其重量轻、强度高、防水防潮、…

2025年专注离婚财产分割的离婚财产分割律师热门榜单

2025年专注离婚财产分割的离婚财产分割律师热门榜单行业背景与市场趋势随着社会经济的发展和人们婚姻观念的转变,我国离婚率近年来呈现上升趋势。根据民政部数据显示,2024年全国离婚登记数量达到历史新高,其中涉及财…

优秀可靠的小程序开发公司推荐

选择一家专业、可靠的小程序开发公司对企业的发展至关重要。推来客网络以其专业技术、优质服务及高性价比的优势,成为成都地区小程序开发公司的优选。如果您正在寻找一家可信赖的小程序开发公司,不妨考虑推来客网络,…

小程序开发企业2025推荐,高性价比与专业定制兼具

推来客网络始终坚持以客户为中心,贯彻“同样的产品比价格、同样的价格看产品”的原则。相比市场上的其他小程序开发企业,推来客网络的报价低于市场价30%50%。这样并非单纯为了竞争,而是为了积累更多客户的信任与合作…

2025年海南人力资源管理师培训服务权威推荐榜单:人力资源管理师考证/高级人力资源管理师培训/中级人力资源管理师培训优质机构精选

在海南自由贸易港建设蓬勃发展的背景下,人力资源管理师已成为当地人才市场最炙手可热的专业岗位之一。 随着海南自贸港政策红利的持续释放,人力资源服务行业迎来了前所未有的发展机遇。据统计,海南人力资源管理师持…

2025年专业的短视频运营行业领先榜

2025年专业的短视频运营行业榜开篇:短视频运营行业背景与市场趋势随着5G技术的全面普及和移动互联网的深入发展,短视频行业在2025年迎来了前所未有的发展机遇。据统计数据显示,2025年中国短视频用户规模已突破9亿,…

2025年北京名表回收公司权威推荐榜单:银元回收/钻戒回收‌/钻石回收‌源头公司精选

在二手奢侈品市场企稳回暖的背景下,专业名表回收服务正以规范的鉴定流程和透明的估价体系,成为名表流通和价值释放的重要环节。 据市场分析数据显示,截至2025年第一季度,全球二手奢侈手表价格跌幅已收窄至0.4%,为…