今天在对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{}即可,它调用构造函数,但是是临时的,并没有名字指向它,调用完之后再无法找到这个匿名类