gpt4 book ai didi

c++ - C++11中列表初始化的优点

转载 作者:太空狗 更新时间:2023-10-29 20:11:37 24 4
gpt4 key购买 nike

到目前为止,我发现了 list initialization 的以下用途(又名统一初始化)。

1) 之前介绍的是列表初始化特性

int a=3.3f;   // ouch fractional part is automatically truncated

但是在 C++11 中

int a{3.3f};  // compiler error no implicit narrowing conversion allowed

2) 动态数组元素可以静态初始化。 例如,这个程序在 C++03 中无效,但自 C++11 起有效:

#include <iostream>
int main()
{
int* p=new int[3]{3,4,5};
for(int i=0;i<3;i++)
std::cout<<p[i]<<' ';
delete[] p;
}

3) 它解决了most vexing parse问题

如果你告诉我列表初始化的其他优点会更好。除了上述3点之外,列表初始化还有什么优势吗?

非常感谢您的回答。

最佳答案

你没有提到的一个重要优势是它在模板元编程中的实用性,你现在可以使用模板计算一些东西,然后在 constexpr 函数中扩展一些模板数据结构并将结果存储在数组中。

参见此处的示例:Populate An Array Using Constexpr at Compile-time

在代码中:

template<unsigned... Is>
constexpr Table MagicFunction(seq<Is...>){
return {{ whichCategory(Is)... }};
}

我不认为在 C++11 之前有任何方法可以做类似的事情。

关于c++ - C++11中列表初始化的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com