|
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
|
|||||||||||
объяснить функцию09.10.2011, 17:44. Показов 2847. Ответов 26
Метки нет (Все метки)
Всем привет!
Есть код:
Объектов 3, помогите понять что твориться в этих строках
0
|
|||||||||||
| 09.10.2011, 17:44 | |
|
Ответы с готовыми решениями:
26
Объяснить функцию проверки степени Объяснить функцию perevod |
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
||||||
| 09.10.2011, 17:52 | ||||||
|
Не понятно, какое отношение имеет код к заданию о количестве объектов, ну ладно
1) почему строка
А так это объявление дружественной функции инкремента для класса и реализация этой функции.
1
|
||||||
|
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
|
|
| 09.10.2011, 18:13 [ТС] | |
|
дело в том, что препод дал только код из книги и все
Добавлено через 15 минут Извините, но можно поподробнее объяснить что и зачем? Заранее благодарен
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||
| 09.10.2011, 18:20 | |||
|
1
|
|||
|
|
||||||||
| 09.10.2011, 18:23 | ||||||||
|
В программе это в качестве параметра которой вызван конструктор преобразования INC(x), в результате в private переменных z и х будет 6
1
|
||||||||
|
Заблокирован
|
|
| 09.10.2011, 18:32 | |
|
Тут вам, как всегда, "грамотные" модераторы дали неверные советы.
Дружественная функция может быть определена внутри класса. Что касается вашего вопроса про выделенные вами строки, то это задается дружественная функция INC вашего класса integer1. То есть сначала она объявляется, а затем следом внутри класса определяется. В этом случае эта функция является встраиваемой. Друзьями класса (в том числе дружественной функцией) является функция или класс, которые не являются членами класса, для которого они определены дружественными, но при этом они могут использовать закрытые и защищенные имена членов данного класса. То есть в вашем классе член val объявлен со спецификатором доступа private, то есть это означает , что вне класса к нему обратиться нельзя. Тем не менее класс таким правом обращения к своему закрытому члену val наделяет функцию INC. Эта функция будет иметь доступ к этому закрытому члену класса и сможет его изменять.
1
|
|
|
|
||||
| 09.10.2011, 18:34 | ||||
|
Mr. Pyatachok, я тут немножко вам солгал, простите пожалусто!
1
|
||||
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|||||||
| 09.10.2011, 18:41 | |||||||
|
Результаты работы программы в VS2010 x y z 5 0 0 5 6 0 5 6 7 Мне VS2010 на попытку написания тела дружественной функции в теле класса после прототипа выдала ошибку линковки. хотя если неписать прототип, а сделать сразу
1
|
|||||||
|
Заблокирован
|
||||||||||||||||||||||
| 09.10.2011, 18:45 | ||||||||||||||||||||||
|
Кстати сказать, в С++ функция main должна иметь тип возвращаемого значения int, а не void, как у вас написано. То есть должно быть объявление
Кроме того заголовок iostream следует писать без расширения .h, то есть в виде
Что касается ошибки линковки, то у Майкрософт VC++ здесь имеется баг. Более того этот баг присутствует и в VC++ 2010. В VC 2010 вообще куча багов! Пример самого простого мною найденного бага
Данный совершенно корректный код на VC 2010 не компилируется! Правда это относится к компилятору без SP1. С SP1 я не проверял, исправили они ошибку или нет.
1
|
||||||||||||||||||||||
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|||
| 09.10.2011, 18:49 | |||
|
1
|
|||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||||||||||||||
| 09.10.2011, 18:52 | ||||||||||||||||||
1
|
||||||||||||||||||
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
| 09.10.2011, 18:53 | |
|
Nameless One, подозреваю, что если в теле класса поместить определение дружественной функции без прототипа, то должно все работать. а вот если и прототип. и потом реализация - то нет
1
|
|
|
Заблокирован
|
||
| 09.10.2011, 18:58 | ||
|
Что касается примера со структурой, то это совершенно корректный код, если в определении структуры не объявлен конструктор. Дело в том, что в языке С, с которым С++ желательно должен быть максимально совместим, имя структуры и имена переменных, ее членов, находятся в разных пространствах имен. Если считать предложенную конструкцию некорректной, то тогда огромное число кода, написанного на С, будет не компилироваться на С++.
1
|
||
|
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
|
||||||
| 09.10.2011, 19:04 [ТС] | ||||||
|
Извините за наглость, но можете еще прокомментировать еще один код и я отстану со своими нубскими вопрсами
0
|
||||||
|
Заблокирован
|
||
| 09.10.2011, 19:07 | ||
|
Попробуйте убрать из класса объявление функцуии и оставьте только определение и прокомпилируйте с помощью gcc. Мне самому будет интересен результат. Чтобы сомнений не было, я процитирую стандарт, раздел 11.4 "Friends" #5. "A function can be defined in a friend declaration of a class if and only if the class is a non-local class"
1
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 09.10.2011, 19:10 | |
|
Mr. Pyatachok, там не на что смотреть, кроме как на реализацию оператора доступа по индексу. Он возвращает символ пробела, если переданный индекс больше либо равен размеру хранимой строки, и соответствующий символ строки. И да, в 20 строке мы выйдем за границы массива. Ну или если передадим отрицательный индекс.
1
|
|
|
Заблокирован
|
||
| 09.10.2011, 19:11 | ||
|
1
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 09.10.2011, 19:14 | ||
|
Mr. Pyatachok, где ты такой код берешь?
1
|
||
|
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
|
|
| 09.10.2011, 19:17 [ТС] | |
|
Извините но книгу препод не показал.
0
|
|
|
Заблокирован
|
||
| 09.10.2011, 19:19 | ||
|
Что касается Майкрософт VC++ 2010, то, даже убрав из класса предварительное объявление, код не компилируется. То есть имеет место очевидный баг. Например, на старом Borland Builder 5.0 этот код компилируется.
0
|
||
| 09.10.2011, 19:19 | |
|
Помогаю со студенческими работами здесь
20
Объяснить функцию арксинус Объяснить функцию двухмерного массива Объяснить пожалуйста мне эту функцию
Объяснить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|