C++ 面试题 目录

C++20 中指定初始化器 (designated initializer) 的用法?

推荐答案

在C++20中,指定初始化器(designated initializer)允许你在初始化结构体或类的对象时,通过指定成员名称来初始化特定的成员。这种方式可以提高代码的可读性,并且允许你只初始化部分成员。

-- -------------------- ---- -------
-------- ----------

------ ----- -
    --- --
    --- --
    --- --
--

--- ------ -
    ----- -- - - -- - --- -- - -- --  -- ----------------
    ----- -- - - -- - --- -- - -- --  -- ----------------

    --------- -- ---- -- -- ---- -- -- - -- ---- -- -- - -- ---- -- ------
    --------- -- ---- -- -- ---- -- -- - -- ---- -- -- - -- ---- -- ------

    ------ --
-

本题详细解读

1. 指定初始化器的基本用法

指定初始化器允许你在初始化结构体或类的对象时,通过指定成员名称来初始化特定的成员。这种方式可以避免初始化顺序的错误,并且可以只初始化部分成员。

2. 语法规则

  • 使用 .成员名 = 值 的形式来指定初始化某个成员。
  • 未指定的成员将被默认初始化(对于基本类型,通常是零初始化)。
  • 指定初始化器的顺序不需要与结构体或类中成员的声明顺序一致。

3. 适用场景

  • 当结构体或类有很多成员,但你只想初始化其中一部分时。
  • 当你希望代码更具可读性,明确指定每个成员的初始化值时。

4. 注意事项

  • 指定初始化器是C++20引入的新特性,因此在C++20之前的版本中无法使用。
  • 指定初始化器不能用于数组的初始化。

5. 示例代码解析

在示例代码中,Point 结构体有三个成员:xyz。通过指定初始化器,我们可以选择性地初始化 xy,或者 yz,而未指定的成员将被默认初始化。

输出结果为:

可以看到,未指定的成员被默认初始化为0。

纠错
反馈