С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Переопределить оператор << в классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Присвоить текст заголовку чужого окна с русским названием (страдает кодировка) http://www.cyberforum.ru/cpp-beginners/thread666280.html
Добрый день. Вот такой код #include <windows.h> int main(int argc) { HWND thehwnd;
C++ Функция доводит длину строки до заданной, вставляя пробелы между словами Функция доводит длину строки до заданной, вставляя пробелы между словами. слово может складатса с любых символов идея так считать сначала n, где n наша строка которая даст знать скоко пробелов... http://www.cyberforum.ru/cpp-beginners/thread666272.html
C++ Взаимосвязанные исходные файлы
Как сделать так чтобы в одном исходном файле я мог использовать элементы из другого и наоборот. А то я делаю змейку и у меня не получается сделать чтобы в классе Snake был указатель на Food и в Food...
Если строки начинаются с одинаковых символов, напечатать «ДА», иначе –«НЕТ» C++
Народ, помогите мне пожалуйста. Даны две строки. Если они начинаются с одинаковых символов, то напечатать «ДА», иначе –«НЕТ». В С++. Прошу, помогите.
C++ Сформировать одномерный массив из номеров первых отрицательных элементов каждой строки матрицы http://www.cyberforum.ru/cpp-beginners/thread666259.html
Дана матрица А размерностью n*m. Сформировать одномерный массив В, элементами которого являются номера первых отрицательных элементов каждой строки массива А. (0 – отрицательный элемент отсутствует)....
C++ Напечатать числа в порядке неубывания Помогите пожалуйста написать программу: Даны целые числа a1, a2, ..., an. Напечатать числа в порядке неубывания. Именно напечатать, а не отсортировать. Использовать 2 массива: в 1-м находятся сами... подробнее

Показать сообщение отдельно
Neumann1
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 30
08.10.2012, 22:49  [ТС]
Прочитал ваш комментарий, потом прочитал про friend у Страуструпа (не в стандарте, а в "Язык прог-ия С++"), все равно до конца не пойму. А хочется понять.
Вот эта часть книги (но другими словами - наверное другое издание)
Следовательно операция, изменяющая состояние объекта класса,
должна быть членом или глобальной функцией с параметром-ссылкой
без спецификации const. Операции над основными типами, которые
требуют в качестве операндов адреса (=, *, ++ и т.д.),
для пользовательских типов естественно определять как члены.
Обратно, если требуется неявное преобразование типа для всех
операндов некоторой операции, то реализующая ее функция должна
быть не членом, а глобальной функцией и иметь параметр типа ссылки
со спецификацией const или нессылочный параметр. Так обычно обстоит
дело с функциями, реализующими операции, которые для основных
типов не требуют адресов в качестве операндов (+, -, || и т.д.).
под глобальными здесь имеются ввиду френды, там потом в примерах так.
У меня в книге лучше написано, но здесь тоже самое.

Но я не пойму соль.
Вот если я объявлю функцию-член например
C++
1
2
3
4
5
6
7
8
class MyClass
{
 
//
     void f(int arg1, char arg2){}
//
 
}
то никаких проблем, что у функции-члена два аргумента нет! Всё норм.
А если именно переопределяю оператор, то я должен смотреть - бинарный он или унарный (соответственно два или один аргумент). Почему? Почему не могу переопределить оператор с двумя аргументами как функцию-член?

Я не хочу принимать как данность, я хочу понять причину.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.