c++ 使用new时如何传递initializer

p = new T[N] {initializer1, ..., initializerN};
这是C++11中用new来申请一块数组时候的语法。后面的{}中可以传递参数,从而调用不同的constructor;

考虑下列代码;

struct Workshops {
    int start;
    int end;
    int duration;
    Workshops(){};
    Workshops(int a,int b,int c):start(a),end(b),duration(c) {};
};

Workshops* p = new Workshops[5]{{1,2,3},{3,4,5}};

加粗的那一行,传入构造函数的参数为{1,2,3},{3,4,5},所以自动调用了workshop(int a,int b,int c)这个constructor。剩下的自动用default constructor补充上了。


另外注意一点,即

Workshops* p = new Workshops[2]{{1,2,3},{3,4,5}};
我传了两组initializer 进去,按理说已经足够了。但是如果你把default constructor删除掉,C++还是会报错,说没有matching的constructor。

所以这里注意一下,如果想在new的过程中赋予参数,一定要记得写default constructor.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值