Зачем метод close в 11 уроке?

Отщеплен от топика Группы сайта в Telegram

Ещё хочу спросить.
А зачем метод close() в 11-ом уроке? Оказывается, в том случае он не нужен.
Я слышала про принцип матрёшки в наследовании классов. Почему Вы его не использовали?

А зачем метод close() в 11-ом уроке? Оказывается, в том случае он не нужен.

У нас с MasterOfAlteran возник даже целый диспут на эту тему.

Поскольку мы создали объект std::ofstream на стеке, то при завершении функции объект автоматически удаляется и вызывается деструктор, в котором происходит вызов close(), если файл не был закрыт.

Поэтому ответ: явный вызов не обязателен. Но для лучшего понимания происходящего, он представлен в уроке.

selevit'y.

Поскольку мы создали объект std::ofstream на стеке, то при завершении функции объект автоматически удаляется и вызывается деструктор, в котором происходит вызов close(), если файл не был закрыт.

Говорят, что это считается хорошим тоном в программировании. Правда ли это?

Поэтому ответ: явный вызов не обязателен. Но для лучшего понимания происходящего, он представлен в уроке.

Теперь Вы с MasterOfAlteran'ом пришли в общую точку.

Ещё вопрос: а почему Вы не используете принцип «матрёшки» в наследовании классов? То есть, это:

student::
    human::
        // сюда методы класса student доступа не имеют, поскольку переменные приватные для класса human
        string name; // имя
        string last_name; // фамилия
        string second_name; // отчество
    ::human

    vector<int> scores;
::student

Говорят, что это считается хорошим тоном в программировании. Правда ли это?

Нет. Чем больше лишних действий, тем хуже код.
Все кто работает с C++ прекрасно знают,
что файл закроется в деструкторе,
поэтому лишние телодвижения будут только с толку сбивать.
Явное закрытие нужно использовать
только для «досрочного» закрытия файла.
Но, автор Вам уже ответил:

Но для лучшего понимания происходящего, он представлен в уроке.

Просто не делайте этого в своём коде,
когда будете что-то разрабатывать.

как сделать таймер?

1) Использовать системный.
2) Использовать второй поток для реализации своего.

Хочу сделать таймер, который, например, очищал бы экран через десять секунд.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.