<C++> У меня есть вопрос о вызове конструктора класса
class Gun { int bullet; public: Gun(int num) : bullet(num) {} void SD() { cout << bullet << endl; } }; class Police { int hand; Gun* pistol; public: Police(int num, int hand) : hand(hand) { if (num > 0) pistol = new Gun(num); else pistol = NULL; } void SD() { pistol->SD(); cout << hand << endl; } Police(const Police& ref) : hand(ref.hand) { if (ref.pistol != NULL) pistol = new Gun(*(ref.pistol)); } };
Что я уже пробовал:
Этот код является частью примера кода для книги, которую я изучаю. Однако в процессе динамического присвоения в конструкторе копирования класса Police объект *(ref.pistol) вставляется во время вызова конструктора. Как такое возможно?
KarstenK
Компилируется ли этот код? Мне не хватает подходящего конструктора Gun ().:- O
서형박
Для удобства чтения я импортировал только основной код вопроса