📜  C++ 17 |给变量赋值的新方法

📅  最后修改于: 2021-05-30 03:27:55             🧑  作者: Mango

C++ 17引入了许多声明变量的新方法。较早的分配和声明是使用“ =”完成的

例子:

int a = 5;

但是现在在C++ 17中引入了另外两种方式。他们是:

  1. 构造函数初始化:这样,变量的值包含在括号(())中。这样,可以通过以下两种方式传递值。
    #include 
    using namespace std;
      
    // Driver Code
    int main()
    {
      
        // Declaring the variable in parentheses
        // Method 1
        int a(5);
        cout << "a = " << a;
      
        // Declaring the variable in parentheses
        // Method 2
        int b = (10);
        cout << endl
             << "b = " << b;
      
        return 0;
    }
    

    输出:

    a = 5
    b = 10
    

    解释
    在C++ 17中,也可以通过括号提供值来声明变量。构造函数初始化与旧的常规初始化方法之间的区别在于,无论大小或符号是多少,它将始终返回括号中的最后一个值。

    例如,

    a=(2, 21, -50, 1)

    存储在中的值将为1。

  2. 统一初始化:这样,变量的值用大括号({})代替,而不用括号括起来。这样,可以通过以下两种方式传递值。
    #include 
    using namespace std;
      
    int main()
    {
      
        // Declaring the variable in curly braces
        // Method 1
        int a{ 3 };
        cout << "a = " << a;
      
        // Declaring the variable in curly braces
        // Method 2
        int b = { 7 };
        cout << endl
             << "b = " << b;
      
        return 0;
    }
    

    输出:

    a = 3
    b = 7
    

    与构造函数初始化不同,此分配方法只能在括号中使用一个值。提供多个值将返回编译错误。

    例如,

    int b={7, 12};
    

    输出

    prog.cpp: In function 'int main()':
    prog.cpp:9:12: error: scalar object 'b' requires one element in initializer
     int b={7, 12};
                ^
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”