Форум программистов, компьютерный форум CyberForum.ru

Перегрузка запятой - C++

Восстановить пароль Регистрация
 
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
27.07.2012, 14:32     Перегрузка запятой #1
В одном учебнике (Топп, Структуры данных) указывается, что опекрация запятая не может быть перегружена.
Дейтлы утверждают прямо противоположное.
Кто из них прав?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 14:32     Перегрузка запятой
Посмотрите здесь:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов C++
Операция с плавающей запятой C++
C++ В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.
Числа с плавающей запятой C++
Цифры после запятой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.07.2012, 14:36     Перегрузка запятой #2
Нельзя перегрузить только . .* :: ?:. Все остальные можно.
An operator function shall either be a non-static member function or be a non-member function and have
at least one parameter whose type is a class, a reference to a class, an enumeration, or a reference to an
enumeration. It is not possible to change the precedence, grouping, or number of operands of operators.
The meaning of the operators =, (unary) &, and , (comma), predefined for each type, can be changed for
specific class and enumeration types by defining operator functions that implement these operators. Operator
functions are inherited in the same manner as other base class functions.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
27.07.2012, 14:43     Перегрузка запятой #3
Это элементарно проверяется.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.07.2012, 14:49     Перегрузка запятой #4
Чуть по-другому попробовал, но тоже получилось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
class MyInt {
    int val;
public:
    MyInt(int i) : val(i) {}
    int operator , ( const MyInt & another ) const { return ( val < another.val ) ? another.val : val; }
};
 
int main() {
    std::cout << ( MyInt(13), MyInt(69) ) << '\n' << ( MyInt(69), MyInt(13) ) << std::endl;
    
    return 0;
}
Код
./comma 
69
69

Не по теме:

Цитата Сообщение от ramybozy Посмотреть сообщение
Топп
ФТоппку !

Yandex
Объявления
27.07.2012, 14:49     Перегрузка запятой
Ответ Создать тему
Опции темы

Текущее время: 15:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru