类/结构体成员变量初始化用大括号还是小括号,二者有什么区别?
本人菜鸡,也是第一次来咱们论坛。现在边看别人代码,边学习c++,现在看到一些问题很疑惑,特来请教各位,在此非常感谢。关于类成员变量或结构体成员变量的初始化问题,我看到别人代码如下。
第一部分是别人定义的结构体中的代码,第二部分是类构造函数的部分代码。我有两个疑问,第一,有些成员变量为什么不直接用等号赋值呢?而是只写一个初始值呢?比如第一部分加粗代码。第二,成员变量的初始化到底是用大括号还是小括号呢?第一部分结构体中基本用的大括号。而第二部分类构造函数的初始化列表中有的有大括号,有的用小括号,应该怎么区分呢?二者有什么区别吗?非常感谢。
第一部分:
程序代码:
struct GlobalConfiguration { // The overall size of the volume (in mm). Will be allocated on the GPU and is thus limited by the amount of // storage you have available. Dimensions are (x, y, z). // 其实也是核函数的数目, 这里的make_int3是CUDA中的核函数的大小 int3 volume_size { make_int3(512, 512, 512) }; // The amount of mm one single voxel will represent in each dimension. Controls the resolution of the volume. float voxel_scale { 2.f }; // Parameters for the Bilateral Filter, applied to incoming depth frames. // Directly passed to cv::cuda::bilateralFilter(...); for further information, have a look at the opencv docs. int bfilter_kernel_size { 5 }; float bfilter_color_sigma { 1.f }; float bfilter_spatial_sigma { 1.f };
第二部分:
程序代码:
Pipeline::Pipeline(const CameraParameters _camera_parameters, const GlobalConfiguration _configuration) : // 生成参数对象 camera_parameters(_camera_parameters), configuration(_configuration), // 设置volume volume(_configuration.volume_size, _configuration.voxel_scale), // 设置模型数据(自己-这是某一帧的数据) model_data(_configuration.num_levels, _camera_parameters), // 初始化数据: 清空位姿,轨迹等 current_pose{}, poses{}, frame_id{0}, last_model_frame{} {***************************************************************}