2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 перегрузка оперций
Сообщение04.06.2009, 19:55 


30/04/09
81
Нижний Новгород
Люди подскажите пожалуйста почему в C++ операции =,(),[] и -> можно перегружать только как методы класса.

Или подскажите литературу где моно почитать?

 Профиль  
                  
 
 Re: перегрузка оперций
Сообщение05.06.2009, 08:56 
Заслуженный участник
Аватара пользователя


03/06/09
1497
INDIGO1991 в сообщении #219688 писал(а):
Люди подскажите пожалуйста почему в C++ операции =,(),[] и -> можно перегружать только как методы класса.

Надо начать с того, что изначально в первых версия C++ не было понятия дружественных функций и все перегрузки делались как члены класса. Потом Страуструп заметил, что некоторым операторам (типа operator+ и др. арифметическим) желательно иметь "симметричность" относительно операндов и, в конце концов, он не нашел ничего лучшего как придумать дружественные функции. Так что к твоему вопросу надо подходить с другого конца: не "почему указанным операторам нельзя быть друзьями класса", а "почему другим операторам разрешили быть друзьями" (на это я ответил выше).
Операторы [], () и -> всегда относятся к левому операнду, если бы им позволили быть друзьями, то это не создало бы ничего, кроме глупых и, возможно, труднонаходимых ошибок, поэтому Страуструп позаботился о программистах и разрешил этим операторам быть только членами класса.

INDIGO1991 в сообщении #219688 писал(а):
Или подскажите литературу где моно почитать?

Б. Страуструп, Дизайн и эволюция C++. Ну и егошный учебник, конечно.

 Профиль  
                  
 
 Re: перегрузка оперций
Сообщение06.06.2009, 11:45 


30/04/09
81
Нижний Новгород
спасибо

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group