ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Перевантаження операцій
         

     

    Інформатика, програмування

    Перевантаження операцій

    Цей клас ostream визначає операцію <<, щоб зробити зручним висновок декількох об'єктів одним оператором. Давайте подивимося, як це зроблено.

    Щоб визначити @, де @ - деяка операція мови C + +, для кожного визначається користувачем типу ви визначаєте функцію з ім'ям operator @, яка отримує параметри відповідного типу. Наприклад:

    class ostream (

    //...

    ostream operator <<(char *);

    );

    ostream ostream:: operator <<(char * p)

    (

    while (* p) buf.sputc (* p ++);

    return * this;

    )

    визначає операцію <<як член класу ostream, тому s < ");

    а якщо застосувати операцію взяття адреси, то ви отримаєте адреса об'єкта, на який посилається посилання:

    & s1 == & my_out

    Перша очевидна користь від посилань полягає в тому, щоб забезпечити передачу адреси об'єкта, а не самого об'єкта, у функцію виводу (в деяких мовах це називається передачею параметра за посиланням):

    ostream & operator <<(ostream & s, complex z) (

    return s << "(" <

    )

    Досить цікаво, що тіло функції залишилося без змін, але якщо ви будете здійснювати присвоювання s, то будете впливати на сам об'єкт, а не на його копію. У даному випадку те, що повертається посилання, також підвищує ефективність, оскільки очевидний спосіб реалізації посилання - це покажчик, а передача покажчика набагато дешевше, ніж передача великої структури даних.

    Посилання також істотні для визначення потоку введення, оскільки операція введення отримує як операнда змінну для зчитування. Якщо б посилання не використовувалися, то користувач повинен був би явно передавати їх індекси у функції введення.

    class istream (

    //...

    int state;

    public:

    istream & operator>> (char &ap;);

    istream & operator>> (char *);

    istream & operator>> (int &);

    istream & operator>> (long &);

    //...

    );

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

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status