为什么要像这样使用成员初始化列表?[复制]

Why use member initialzing list like this? [duplicate]

提问人:Thomas Nilsson 提问时间:11/10/2023 最后编辑:Thomas Nilsson 更新时间:11/10/2023 访问量:54

问:

这个问题在这里已经有答案了:
14天前关闭。

这篇文章在 14 天前被编辑并提交审核,但未能重新打开帖子:

原始关闭原因未解决

使用这样的成员初始化列表有什么意义,下面的“ : enPin_(enPin), adcCh_(adcCh) { ”?

为什么不直接使用pinMode(enPin, OUTPUT);

谢谢!

NTC::NTC(int enPin, adc1_channel_t adcCh) : enPin_(enPin), adcCh_(adcCh) {
 pinMode(this->enPin_, OUTPUT);
 digitalWrite(this->enPin_, HIGH); //TBD LOW by default

  this->adc_chars = (esp_adc_cal_characteristics_t *) calloc(1, sizeof(esp_adc_cal_characteristics_t));
  esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, DEFAULT_VREF, this->adc_chars);

  if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) {
    ESP_LOGD("D", "Calibration: eFuse Vref");
  } else if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) {
    ESP_LOGD("D", "Calibration: TP Vref");
  } else {
    ESP_LOGD("D", "Calibration: Default");
  }

  ESP_ERROR_CHECK(adc1_config_width(ADC_WIDTH_BIT_12));
  ESP_ERROR_CHECK(adc1_config_channel_atten(this->adcCh_, ADC_ATTEN_DB_11));
}
C++ List 成员

评论

0赞 Alnitak 11/10/2023
表示将成员变量的值设置为参数的值。enPin_enPin
0赞 user12002570 11/10/2023
它被称为构造函数初始值设定项列表。请参阅构造函数中这个奇怪的冒号成员 (“ : ”) 语法是什么?
0赞 Joachim Sauer 11/10/2023
请确保始终至少标记您在问题中询问的语言。这有助于正确的人看到您的问题。
0赞 Thomas Nilsson 11/10/2023
好的,谢谢你的回答!注意:我被告知我的问题已经有其他答案,我的问题已经结束。我有机会编辑我的问题。所以我做到了。在那之后,我才意识到这篇文章中我最初的问题有答案。所以现在我可能看起来很奇怪,在答案之后,我把问题编辑成别的东西。很抱歉造成混乱。不过,堆栈溢出的奇怪行为,IMO。在告诉我问题已关闭并要求我编辑问题之前,它应该突出显示我得到的答案。
2赞 Jesper Juhl 11/10/2023
@ThomasNilsson这个问题没有答案。只是一些评论

答: 暂无答案