C++那些事之有趣的面试问题

最近想出一些有趣的问题,做一个小总结,你能回答上来几个?

注:完整答案会在星球揭秘。

问题1:std::variant构造函数会调用几个类型构造,1个?2个?n个?

std::variant<std::string, int> a1;
std::variant<X, Y> a2;

相关问题:

  1. std::variant 的默认构造行为如何?

  2. std::variant 包含类型不具有默认构造函数时会发生什么?

  3. 如何指定 std::variant 的初始值类型?

问题2:下面代码可以正常运行吗?如果可以运行说明理由,否则给出几个解决方案。

struct X {
    X(int v) : v_(v) {}
    int v_;
};

struct Y {
    Y(double v) : v_(v) {}
    double v_;
};

std::variant<X, Y> a1;

相关问题:

  1. 如何为 std::variant 添加具有默认构造函数的类型?

  2. std::variant 的类型列表中没有默认构造函数时,有哪些解决方案?

  3. 如何显式构造 std::variant 以避免默认构造问题?

问题3:什么是monostate,解决了什么问题?

相关问题:

  1. 如何在 std::variant 中使用 std::monostate

  2. std::monostate 的引入对 std::variant 的设计有哪些影响?

  3. 在什么情况下使用 std::monostate 是合适的?

问题4:defer_lock_t、try_to_lock_t、adopt_lock_t这三者的区别是什么?什么场景下使用?

相关问题:

  1. defer_lock_t 的使用场景和实现机制是什么?

  2. try_to_lock_t 如何处理互斥锁的尝试锁定?

  3. adopt_lock_t 在接管已有锁的所有权时有什么注意事项?

玩转cpp小项目星球3周年了!

7a4078ebaa80ed19806b94f9e8f15361.png

286ab6b2e87ea8bf728efe7045a53c82.jpeg

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值