C++中构造函数签名后以:solvers::Constraint开头的代码段名称是什么?
StaticEquilibriumConstraint::StaticEquilibriumConstraint( const MultibodyPlant<AutoDiffXd>* plant, systems::Context<AutoDiffXd>* context, const std::map<SortedPair<geometry::GeometryId>, GeometryPairContactWrenchEvaluatorBinding>& contact_pair_to_wrench_evaluator) : solvers::Constraint(plant->num_velocities(), plant->num_positions() + plant->num_actuated_dofs() + GetLambdaSize(contact_pair_to_wrench_evaluator), Eigen::VectorXd::Zero(plant->num_velocities()), Eigen::VectorXd::Zero(plant->num_velocities())), plant_{plant}, context_{context}, contact_pair_to_wrench_evaluator_(contact_pair_to_wrench_evaluator), B_actuation_{plant_->MakeActuationMatrix()} {}
术语说明
你所询问的代码段C标准官方中文术语为成员初始化列表,对应英文标准术语为member initializer list。
此处需要注意和常被口语简称为“初始化列表”的std::initializer_list做区分:std::initializer_list是C标准库提供的类模板,用于实现同类型对象集合的初始化,和此处构造函数的成员初始化列表是完全不同的语法特性。
成员初始化列表的作用是在构造函数体内的逻辑执行前,完成类的基类子对象、自身非静态成员变量的初始化:你示例中开头的solvers::Constraint(...)就是对当前类的基类执行构造调用完成基类子对象初始化,后续的plant_{plant}等项是对类的成员变量进行初始化,二者都属于成员初始化列表的合法组成部分。
内容的提问来源于stack exchange,提问作者user3180
相关产品推荐
相关产品推荐

