zoukankan      html  css  js  c++  java
  • C++11/17 语法新特性(踩坑第1篇)

    C++11开始,可以用  {  }  来初始化类的对象。

    auto uri = mongocxx::uri{ "mongodb://host1/?minPoolSize=3&maxPoolSize=5" };
    //小括号初始化
    string str("hello");
     
    //等号初始化
    string str="hello";
     
    //大括号初始化
    struct Studnet{
     char* name;
     int age;
    };
    Studnet s={"dablelv",18}; //纯数据(Plain of Data,POD)类型对象
    Studnet sArr[]={{"dablelv",18},{"tommy",19}}; //POD数组

    C++11扩充了大括号初始化功能

    class Test{ 
     int a; 
     int b; 
    public: 
     C(int i, int j); 
    }; 
    Test t{0,0};     //C++11 only,相当于 Test t(0,0); 
    Test* pT=new Test{1,2};   //C++11 only,相当于 Test* pT=new Test{1,2}; 
    int* a = new int[3]{ 1, 2, 0 }; //C++11 only

    此外,C++11大括号初始化还可以应用于容器,终于可以摆脱 push_back() 调用了,C++11中可以直观地初始化容器了:

    // C++11 container initializer 
    vector<string> vs={ "first", "second", "third"}; 
    map<string,string> singers ={ {"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}}; 


    因此,可以将C++11提供的大括号初始化作为统一的初始化方式,既降低了记忆难度,也提高的代码的统一度。

    此外,C++11中,类的数据成员在申明时可以直接赋予一个默认值

    class C 
    {
    private: 
     int a=7; //C++11 only
    }; 
  • 相关阅读:
    二维数组中的查找--python实现
    redis 学习笔记二
    redis 学习笔记(一)
    mysql sql知识总结
    工作或日常生活工具网站
    Git冲突:commit your changes or stash them before you can merge. 解决办法
    pandas 学习二
    python supervisor 守护进程 防止进程掉线
    pandas 学习
    django 定时器
  • 原文地址:https://www.cnblogs.com/music-liang/p/12777302.html
Copyright © 2011-2022 走看看