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
};
原文链接: https://www.cnblogs.com/music-liang/p/12777302.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/196551
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!