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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
#1

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

27.07.2012, 14:32. Просмотров 759. Ответов 3
Метки нет (Все метки)

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

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов C++
Операция с плавающей запятой C++
C++ В строке имеется одна точка с запятой (;). Подсчитать количество символов до точки с запятой и после нее.
Числа с плавающей запятой C++
Цифры после запятой C++
C++ c++ среднее значение с запятой
знаки после запятой C++
цифры после запятой C++
C++ Цифры после запятой
Ругается на точку с запятой C++
C++ Символы после запятой
C++ N знаков после запятой

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
Эксперт С++
1605 / 997 / 118
Регистрация: 27.09.2009
Сообщений: 1,923
Завершенные тесты: 1
27.07.2012, 14:43     Перегрузка запятой #3
Это элементарно проверяется.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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     Перегрузка запятой
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru