栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++11(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++11(1)

文章目录
  • 统一的列表初始化
  • initializer_list
  • 声明
    • auto
    • decltype
    • nullptr

统一的列表初始化
struct Point
{
    int _x;
    int _y;
    Point(int x,int y)
    :_x(x),_y(y){cout<<"1"<
    private:
    int _a;
    public:
    explicit A(int a)
    :_a(a){}

};


    //单参数类型支持隐式类型转换
void test2()
{
    A aa(2);//单参数的类型,可以使用正常的方式
    //A b=2;//也可以使用这种隐式类型的转换
    //2拷贝构造一个A,在进行拷贝构造成b
    //加一个explicit,就不能这样了
    string s1="hjs";//string的构造函数没有加explicit
    vector v;
    v.push_back("hjk");//这也是隐式类型转换

}



void test1()
{

    //以前
    Point p={1,2};//c语言是使用这种方式来初始化
    int brr[5]={1,2,3,4,5};//使用这种大括号进行初始化

    
    //现在s
    int a=1;
    int b={2};//现在还可以这样进行初始化,=也省略了
    int c{3};
    int arr[5]{1,2,3,4};
    Point k{1,2};
    int * ptr=new int[5]{1,2,3};//初始化了前3个值,后面的值全都是0
    Point* ptrd=new Point[2]{{1,1},{2,2}};//现在还可以这样进行初始化,里面必须要又两个{}
    //new要去调用他的构造函数



    //正常调用point
    Point p1(1,2);//调用构造函数
    
    //c++11支持的多参数的构造函数
    Point p2={1,2};
    Point p3{1,2};



}

initializer_list
auto il={1,2,3};
void test3()

{
    //都是因为支持initializer_list的构造函数

    //以前的vector初始化
    vector v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);

    vector v2={1,2,3,4};//现在vector也可以这样初始化, 掉的就是initializer list进行初始化

    initializer_list lt={1,2,3};//
    list l={1,2,3};//链表也可以这样初始化
    map dic={{"dasd","dsa"},{"dsada","fd"}};//map也可以
    v2={10,20,30};//也可以用赋值,不是构造,在赋值运算符重载那里使用了initialzer_list 

    for(auto e:v2)
    {
        cout< 
  List(initializer_list ilt) //使用initializer_list进行初始化
        {
            _head = new Node;     //无参构造
            _head->_next = _head; //因为是双向链表
            _head->_prev = _head;

            typename initializer_list::iterator it=ilt.begin();
            while(it!=ilt.end())
            {
                PushBack(*it);
                it++;
            }
        }

声明 auto

自动推导类型,范围for

decltype

推导对象的类型,可以作为模板参数

int func(int a)
{
    return a;
}
void test4()
{
    const int x=10;
    cout< dict={{"sort","排序"},{"insert","插入"}};
    auto it=dict.begin();
    auto cpit=it;
    //但是不能把auto作为模板参数
    vector v;//这样就很方便
    v.push_back(it);

}
nullptr

避免了NULL 定义为0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949969.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号