AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 世界职业院校技能大赛汽车工程系选拔理论考试题库 题目详情
CAF88E2CAFE00001135B77F0847512A7
世界职业院校技能大赛汽车工程系选拔理论考试题库
1,000
单选题

C++中,使用什么来实现懒加载?

A
std::optional
B
std::unique_ptr
C
std::shared_ptr
D
以上都不是

答案解析

正确答案:A

解析:

好的,让我们来详细解析这道题。 ### 题目解析 **懒加载(Lazy Loading)** 是一种设计模式,用于延迟对象的初始化或资源的加载,直到实际需要时才进行。这种模式可以提高程序的性能和资源利用率。 在 C++ 中,有多种方式可以实现懒加载,但题目要求选择一个最合适的选项。 ### 选项分析 **A. std::optional** - `std::optional` 是 C++17 引入的一个类模板,用于表示一个可能包含值也可能不包含值的对象。 - 它可以在需要时才初始化其内部值,因此非常适合实现懒加载。 - 示例: ```cpp #include #include class ExpensiveObject { public: ExpensiveObject() { std::cout << "ExpensiveObject created\n"; } void doSomething() { std::cout << "Doing something\n"; } }; int main() { std::optional obj; // 没有立即创建对象 if (/* some condition */) { obj.emplace(); // 在需要时创建对象 obj->doSomething(); } return 0; } ``` **B. std::unique_ptr** - `std::unique_ptr` 是一个智能指针,用于管理动态分配的对象,并确保对象在不再需要时被正确删除。 - 虽然它可以延迟对象的创建,但它主要用于资源管理,而不是懒加载。 - 示例: ```cpp #include #include class ExpensiveObject { public: ExpensiveObject() { std::cout << "ExpensiveObject created\n"; } void doSomething() { std::cout << "Doing something\n"; } }; int main() { std::unique_ptr obj; // 没有立即创建对象 if (/* some condition */) { obj = std::make_unique(); // 在需要时创建对象 obj->doSomething(); } return 0; } ``` **C. std::shared_ptr** - `std::shared_ptr` 是一个智能指针,用于管理动态分配的对象,并允许多个指针共享同一个对象。 - 虽然它可以延迟对象的创建,但它主要用于多线程环境下的资源管理和引用计数,而不是懒加载。 - 示例: ```cpp #include #include class ExpensiveObject { public: ExpensiveObject() { std::cout << "ExpensiveObject created\n"; } void doSomething() { std::cout << "Doing something\n"; } }; int main() { std::shared_ptr obj; // 没有立即创建对象 if (/* some condition */) { obj = std::make_shared(); // 在需要时创建对象 obj->doSomething(); } return 0; } ``` **D. 以上都不是** - 这个选项显然是错误的,因为 `std::optional` 确实可以用于实现懒加载。 ### 为什么选 A `std::optional` 是最合适的选项,因为它明确地表示了一个可能包含值也可能不包含值的对象,并且可以在需要时才初始化其内部值。这正是懒加载的核心思想。
世界职业院校技能大赛汽车工程系选拔理论考试题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码