在c++中声明对象时 -
以下是两种不同的方式:
MyClass myObj (a,b,c);
我理解这个是调用带有三个参数的构造函数
相比之下
MyClass myObbj{a,b,c};
不确定这里的花括号是什么意思?
作为参考,我正在使用以下代码
// Inertial Navigation EKF
NavEKF EKF{&ahrs, barometer, sonar};
AP_AHRS_NavEKF ahrs{ins, barometer, gps, sonar, EKF};
1. 在C++标准中,使用花括号(例如NavEKF EKF{&ahrs, barometer, sonar};)是允许的。然而,gcc 4.6.1会报错“函数定义未声明参数”。
2. 给定以下代码:
AP_AHRS_NavEKF ahrs;
AP_Baro barometer;
RangeFinder sonar;
2A. 为什么编译器会报错:
NavEKF EKF(&ahrs, barometer, sonar);
但是允许这个:
NavEKF EKF(AP_AHRS_NavEKF &ahrs, AP_Baro barometer, RangeFinder sonar);