Форум программистов, компьютерный форум CyberForum.ru

Виртуальные функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ MessageBox http://www.cyberforum.ru/cpp-beginners/thread346872.html
#include "stdafx.h" #include <windows.h> void main() { MessageBox(0,L"Лалалал",L"Ололо", MB_OK); } Здравствуйте.Есть такой вот рабочий код.При выполнении открывается окошко cmd и MessageBox.Как сделать чтобы открывался ТОЛЬКО MessageBox без окна cmd?
C++ Запись и чтение файлов на диск и с диска Добрый день,помогите пожалуйста составить две программы. 1)Создать файл с полями:Фамилия,№ экзаменационного билета,зачет\незачет. 2)Считывание данных из файла и вывод на экран в виде таблицы,затем опять считать данные из файла и выполнить выборку по условию:Считать данные из файла и сосчитать кол-во здавших и несдавших.Возможность запроса с клавиатуры имени файла. http://www.cyberforum.ru/cpp-beginners/thread346857.html
C++ сконструировать класс
Добрый день. Мне надо сконструировать следующий класс: class LogicElement { public: // constructors / destructor LogicElement(const char *ElementType, int nIpiNmb ); LogicElement(const LogicElement &); ~LogicElement(); //methods void SetInputs(const bool *inputs);
C++ Проблема наследования от шаблонного класса.
Привет всем! У меня есть шаблонный класс, и наследуемый от него шаблонный класс. Базовый: #include "Lgraph.h" #include "Mgraph.h" template <class Edge>
C++ Число прописью, от 1 до 99 на русском http://www.cyberforum.ru/cpp-beginners/thread346741.html
Программа работает, но не совсем правильно, отлично выводит числа от 1 до 20 потом при вводе 21 - выводит один один; 47 - выводит семь семь; 83 - выводит три три. Помогите исправить ошибку. #include <iostream> #include <windows.h> using namespace std; char*Rus(const char* text);
C++ Как правильно записать? y=sin|x|/0,1+9,4sin(3x-2,5) Добавлено через 13 минут матем. формулу подробнее

Показать сообщение отдельно
Bers
Заблокирован
31.08.2011, 21:28     Виртуальные функции
Цитата Сообщение от ForEveR Посмотреть сообщение
Bers, проще, но не дальновидно. А что, если в файл придется выводить
Понял)

Но тогда получается, что:

1. Придётся, предварительно ручками подготавливать поток вывода, и передавать его явно в качестве параметра, что бы класс сделал свою работу. (Излишняя нагрузка на вызывающую сторону)

2. Вызывающей стороне придётся самостоятельно контролировать, корректность работы потока, передаваемого объекту класса, в качестве параметра. В частности, проверять смог ли поток успешно открыть файл, или нет, и не забывать сделать потоку close()

3. Таким образом, вместо того, что бы заложить возможность введения дополнительного функционала, вы заложили сам фунционал, работа по подготовке которого полностью ложиться на плечи вызывающей стороны (пользователя).

Лично я считаю, что если вдруг приспичило выводить результат ещё и в файл - лучше добавить специализированный метод, принимающий в качестве параметра имя файла. Метод сам откроет файл в соответствии с новой задачей: в режиме перезаписи, или ещё как то...
И сам проверит успешность всей операции.

Ведь класс для того и создаётся: с целью облегчить жизнь вызывающей стороне, избавить её от львиной части рутины, по подготовкам и проверкам.
Он должен быть максимально устойчивым к ошибкам, а следовательно - принимать извне как можно меньше параметров.

Если вдруг, в самом конце работы над большим кодом, вдруг внезапно оказалось, что все это время нужно было выводить результат в файл, а не в консоль, и надо везде переделывать код - то это уже не дефект архитектуры, это - косяк планирования.

Можно вылечить за счет добавления в зоне инициализации:
Подготовка класса к работе:

Студент.SetShowMode(Режим); //здесь можно задать так, что бы студент результат писал в файл
//метод сам подготовит поток вывода в соответствии с режимом, и проверит успешность всех операций

...

Cтудент.Show(); //Сам же вывод по прежнему без изменений. Нигде в программе править не придётся.

Добавлено через 10 минут
Цитата Сообщение от AzaKendler Посмотреть сообщение
Ну похвали уже..Я ж учу еще.
 
Текущее время: 15:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru