Всего на сайте:
210 тыс. 306 статей

Главная | Механика

Void SeTime(int phour,int pminute);  Просмотрен 234

void SeTime(int,int,int);};

void Timer::Display(void)

{printf("year=%d month=%d day=%d hour=%d\

minute=%d\n",p->year,p->month,p->day,\

p->hour,p->minute);}

void Timer::SetTime(int pyear,int pmonth,int pday)

{year=pyear;

month=pmonth;

day=pday;}

void Timer::SetTime(int phour,int pminute)

{hour=phour;

minute=pminute;}

Перевантаження функцій є ефективним механізмом у випадках, коли їх реалізації принципово різні. У нашому ж прикладі можна легко обійтись без перевантаження функцій, використовуючи параметри за умовчанням. Дійсно, писати свою функцію для кожного випадку ініціалізації полів даних класу Timer було б дуже нераціонально. Теоретично можлива кількість таких функцій, якщо підійти до цього питання чисто формально, становить 32, але за правилами перевантаження функцій допускається лише 5. Якщо б ми захотіли змоделювати всі ці ситуації за допомогою механізму параметрів за умовчанням, то теоретично необхідно було б 5! =120 (для кожного розміщення параметрів – по одній) функцій-членів класу вигляду

void Timer::SetTime(int pyear=0,int pmonth=0;\

int pday=0,int phour=0,int pminute=0;)

{year=pyear;

month=pmonth;

day=pday;

hour=pour;

minute=pminute;}

Це випливає із правил передавання параметрів за умовчанням. Проте компілятор допустить лише одну таку функцію. Очевидно, що всі шість допустимих варіантів перевантажених функцій з прототипами SetTime(),SetTime(int),SetTime(int,int),SetTime(int,int,int),SetTime(int,int,int,int),SetTime(int,int,int,int,int)можна замінити однією функцією з параметрами за умовчанням, якщо підібрати спеціально розміщення цих параметрів (щоб ініціалізувалися відповідні поля). З останнього прикладу опису функції Timer бачимо, що механізм передавання параметрів за умовчанням не може повністю замінити перевантаження функцій. Це не стосується загального випадку. Адже реалізація кожної перевантаженої функції може бути різною, і їх ніяк не можна замінити однією з параметрами за умовчанням з виграшем у розмірі тексту програми.

Предыдущая статья:Покажчик this Следующая статья:Timer v;. За такого оголошення відбувається лише виділення памяті для відповідно..
page speed (0.0106 sec, direct)