Red Planet
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. - Встретил при изучении ООП перегрузку операторов new и delete для создания экземпляров через указатели и динамических массивов.
Следующий код работает и без их перегрузки. Цитата: class A { /*Функции, конструкторы*/ } ostream& operator << (ostream &s, const A &top) { s <<top.w<<" ("<<top.c<<")."<<endl; return s; } istream& operator >> (istream &is, A &top) { is >>top.w>>top.c; return is; } int _tmain (int argc, _TCHAR* argv[]) { A *pointer; int n; cout <<"Quantity of things: "; cin >>n; for (int i=0; i<n; i++) cin >>pointer[i]; for (int i=0; i<n; i++) cout <<pointer[i]; } | Выходит, что операторы new и delete нужно перегружать только тогда, когда я хочу как-то по-своему задать правила выделения памяти под динамически создаваемые экземпляры (массивы) и не стоит изобретать велосипед, если и так все создается, вводится и выводится без ошибок? Правильно понимаю? - Есть две вещи, измеряющие, сколько выполняется любой участок кода (можно оценить быстродействие решения задачи несколькими методами, чтобы выбрать наискорейший).
Цитата: /*Первая*/ class CTimer { LARGE_INTEGER mlFrequency; LARGE_INTEGER mlStart; public: double duration; CTimer() { QueryPerformanceFrequency(&mlFrequency); } void start() { QueryPerformanceCounter(&mlStart); } void stop() { LARGE_INTEGER lEnd; QueryPerformanceCounter(&lEnd); duration = (double(lEnd.QuadPart - mlStart.QuadPart) / mlFrequency.QuadPart)*1000; } }; /*Вторая*/ DWORD startTime, endTime; startTime=GetTickCount(); /*Участок кода (решение какой-либо задачи), который нужно измерить.*/ endTime=GetTickCount(); printf ("Performance time: %g ms.\n", endTime-startTime); //Вывод результата. | Уверен, что существуют и другие. Могут ли подобные счетчики быть хорошими или плохими? Какие лучше и какие хуже? | Всего записей: 215 | Зарегистр. 18-06-2009 | Отправлено: 19:56 18-09-2010 | Исправлено: Red Planet, 11:45 19-09-2010 |
|