C++面试题解析与代码优化

1、以下语句是否能编译?std::vector > ints { std::make_unique (1), std::make_unique (2) }; 1. 不能编译,因为我们有一个不可复制类型(unique_ptr)的初始化列表,而初始化列表需要复制操作。2. 能编译,因为初始化列表可以处理不可复制类型。3. 能编译,因为编译器可以省略那些额外的复制操作。

  1. 不能编译,因为我们有一个不可复制类型( unique_ptr )的初始化列表,而初始化列表需要复制操作。

2、下面是包含两个数据成员的Point类声明。struct Point { double x; double y; }; 更新这个类,使其使用非静态数据成员初始化(NSDMI),并将Point::x初始化为1.0,将Point::y初始化为2.0。

struct Point { double x = 1.0; double y = 2.0; };

3、下面有一个名为SalesRecord的结构体:#include constexpr unsigned int DEFAULT_CATEGORY = 4; constexpr unsigned int DEFAULT_FLAGS = 0x0a; struct SalesRecord { std::string name_; double price_; unsigned int category_ : 4; unsigned flags_ : 4; }; 使用非静态数据成员初始化(NSDMI)将数据成员初始化为以下值:• name_ 应为 “empty” • price_ 应为 1.0 • category_ 应为 DEFAULT_CATEGORY • flags_ 应为 DEFAULT_FLAGS

constexpr unsigned int DEFAULT_CATEGORY = 4;
constexpr unsigned int DEFAULT_FLAGS = 0x0a;

struct SalesRecord {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值