так как много лет я должен вернуться к использованию c ++. Я немного заржавел, может кто-нибудь объяснить мне, что происходит при конструировании и деконструировании объекта в основной функции.
Код работает как задумано. Странно то, что если я отлаживаю код, отладчик останавливает выполнение два раза, при построении класса и 3 раза при уничтожении. Но он останавливается в части кода, где нет отладочной информации (да, g cc генерирует мне отладочную информацию). Я хотел исследовать это, но я не совсем уверен, что код действительно делает.
Вот код:
class LSPI_BusSymulation_SlaveDevice;
class LSPI_BusSymulation{
public:
LSPI_BusSymulation(uint16_t dataSizePerDevice, uint16_t maxNumberOfDevices, uint16_t actualNumberOfDevices);
private:
uint16_t actualNumberOfDevices;
std::vector<LSPI_BusSymulation_SlaveDevice> devices;
std::vector<uint8_t> recvData;
};
class LSPI_BusSymulation_SlaveDevice{
public:
LSPI_BusSymulation_SlaveDevice(uint16_t processDataSizePerDevice, uint16_t maxNumberOfDevices);
private:
uint16_t dataSizePerDevice;
std::vector<uint8_t> data;
};
LSPI_BusSymulation::LSPI_BusSymulation(uint16_t dataSizePerDevice, uint16_t maxNumberOfDevices, uint16_t actualNumberOfDevices)
: actualNumberOfDevices(actualNumberOfDevices){
recvData.resize(dataSizePerDevice * (maxNumberOfDevices + 1));
devices.assign(actualNumberOfDevices, LSPI_BusSymulation_SlaveDevice(dataSizePerDevice, maxNumberOfDevices));
}
LSPI_BusSymulation_SlaveDevice::LSPI_BusSymulation_SlaveDevice(uint16_t processDataSizePerDevice, uint16_t maxNumberOfDevices)
: dataSizePerDevice(processDataSizePerDevice){
data.resize(processDataSizePerDevice * (maxNumberOfDevices + 1 + 1));
}
int main(){
LSPI_BusSymulation busSymulation(10, 10, 10);
return 0;
}
Для меня важны следующие вопросы: (Но если у вас есть время, пошаговое объяснение тоже может помочь)
Как часто будет вызываются конструктор и деструктор LSPI_SYMULATION_SLAVE_DEVICE?
Все ли объекты, хранящиеся в busSymulation.devices, разделяют объекты своей собственной памятью?
Копируется ли вектор busSymulation.devices [n] .data или выполняется устройства используют один вектор данных?