![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
Не раз слышал такие рекомендации: "операторы, возвращающие новый обьект обычно помещают вне класса", причем от очень многих людей, но вот скачал Doom 3 SDK и вижу, что там этому предписанию практически не следуют
Вот, что прочитал у Липмана: "Итак, на основе чего принимается решение, делать ли оператор членом класса или членом пространства имен? В некоторых случаях у программиста просто нет выбора: • если перегруженный оператор является членом класса, то он вызывается лишь при условии, что левым операндом служит член этого класса. Если же левый операнд имеет другой тип, оператор обязан быть членом пространства имен; • язык требует, чтобы операторы присваивания ("="), взятия индекса ("[]"), вызова ("()") и доступа к членам по стрелке ("->") были определены как члены класса. В противном случае выдается сообщение об ошибке компиляции. В остальных случаях решение принимает проектировщик класса. Симметричные операторы, например оператор равенства, лучше определять в пространстве имен, если членом класса может быть любой операнд." Ну это вроде все элементарно и понятно, да только вот смотрю на реализацию векторов и матриц в Nvidia SDK, а потом на реализацию того же в Doom SDK. Причем первые как раз выносят такие операторы, а вторые нет. Как же быть? Это сообщение отредактировал(а) Alastis - 30.11.2004, 06:52 -------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
А вообще, верить на 100% то, что написано в книжках не следует. Случаи бывают разные, и особенности реализации тоже зависят от многих факторов и причин. Так же и от стиля программирования З.Ы.: Но придерживаться рекомендациям следует |
|||
|
||||
| Alastis |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
Согласен, следует, но ведь в Nvidia не чайники работают Сдается мне, что в данном случае это просто не принципиально важно. Но тогда - когда это действительно важно? Хотя слышал я и такое мнение, что
Это сообщение отредактировал(а) Alastis - 30.11.2004, 10:21 -------------------- Прости, что я говорю, когда ты меня перебиваешь. |
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Alastis
|
|||
|
||||
| Alastis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 15.11.2004 Где: Казахстан, Астана Репутация: 4 Всего: 10 |
то есть а данном случае - это лишь стиль, а к эффективности никакого отношения не имеет?
-------------------- Прости, что я говорю, когда ты меня перебиваешь. |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Верно. Компилятор все равно преобразет все в прямые адреса, независимо от того где оно расположенно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |