У меня есть несколько общих вопросов о C++, о которых мне было интересно, может ли кто-нибудь ответить. Я пишу файл .cpp, который имеет реализации для файла заголовка, который предоставляет мой учитель. Нам не разрешено изменять файл. В принципе, заголовок имеет декларации для корабля базового класса и 4 конкретных типа кораблей. Мои вопросы: 1) Определение класса для корабля базового класса не содержит конструктора. Вместо этого он имеет защищенную функцию Set, которая устанавливает значения для частных членов данных. Предоставляет ли компилятор конструктор по умолчанию? (В основном это автоматически устанавливает частные переменные int равными 1)? Потому что я использую новую функцию динамической памяти для создания объектов производных классов Ship.Что касается наследования и полиморфизма в C++
2) У меня есть заголовок функции virtual int size (void) const = 0; внутри корабль базового класса. Я хочу использовать функцию size() внутри другой функции-члена, чтобы проверить, действительно ли размер судна. Я бы использовал this-> size(), чтобы сделать это внутри объявления функции-члена? (Я уже переопределял размер виртуальной функции в реализации каждого конкретного производного класса)
Thankyou очень много! Пожалуйста, дайте мне знать, если мне нужно включить код или быть более конкретным. Я ценю помощь.
1) «Предоставляет ли компилятор конструктор по умолчанию?» Это зависит, но даже если бы элемент 'int' был инициализирован по умолчанию, т. Е. Мусор. 2) Хорошо, да, как бы вы это сделали? – user657267
Вопрос в том, знает ли компилятор автоматически, какую функцию() выбрать? Потому что я переопределял функцию размера для каждого производного класса. –
Ваш компилятор не будет (как правило, не обычно), виртуальная диспетчеризация - это функция времени исполнения.«Правильная» функция будет вызываться во время выполнения, если функция виртуальна, если в коде нет ошибок. – user657267