C++17尝鲜:把整形变量 i 初始化成1的七种方法

#include 
using namespace std;
int main()
{
    int i1 = 1;
    int i2(1);
    int i3 = {1};
    int i4{1};
    auto i5 = 1; // int i5 = 1;
    auto i6(1); // int i6(1); 
    auto i7 = {1}; // initializer_list i7 = {1};
    auto i8{1}; // int i8{1};
    cout << i1 << endl;
    cout << i2 << endl;
    cout << i3 << endl;
    cout << i4 << endl;
    cout << i5 << endl;
    cout << i6 << endl;
    for(int i77 : i7) cout << i77 << endl;
    cout << i8 << endl;
}

代码说明

  1. i1 i2 的初始化采用了C++传统的初始化形式。i1 所采用的是带等号的拷贝初始化,而i2所采用的是小括号的直接初始化。
  2. i3 i4 的初始化采用了C++11新引入的统一初始化形式,即使用大括号进行初始化。使用大括号同样可以进行拷贝初始化和直接初始化。
  3. i5 i6 i7 i8 的初始化采用了C++11新引入的类型自动推导,即使用auto关键字自动推导变量的类型。
  4. i7 i8 的初始化同时采用了统一初始化形式和类型自动推导,但结果有所不同。
    C++17标准规定同时使用大括号和auto时,如果采用直接初始化,则变量将被推导为单个类型。如果采用拷贝初始化,则变量将被推导为初始化列表类型。

你可能感兴趣的:(C++)