今天在對fastrt代碼進行閱讀時,遇到類的實例化時后面沒有傳統的()
,而是直接使用{}
,有時里邊有參數。搜索{}的使用
搜到這篇文章,講述了{}
的使用
參考文章鏈接:http://www.arthurcode.com/2019/09/16/c%E7%9A%84%E5%92%8C/
()用來表示函數調用,包括普通函數和構建函數,以及可以給內建類型
初始化
int *p = new int[1000];
int *p = new int[1000](); // 內建類型圓括號初始化是語法,是標准
int *p = new int[1000]{}; //
{} 提供列表初始化的功能,最終調用的是構造函數
Point{} // 調用的是Point::Point()構造函數
Point{x, y} // 嗲用的是Point::Point(x, y)構造函數
其他用法:
構造一個匿名的類直接使用Point{}即可,它調用構造函數,但是是臨時的,並沒有名字指向它,調用完之后再無法找到這個匿名類