|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Попался мне такой код Код: plaintext 1. 2. 3. 4.
В чем смысл обращения по ссылке? Почему нельзя так: Код: plaintext 1. 2. 3. 4.
Вопрос чисто академический. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:45 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Ты ничего не перепутал? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:57 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
ИМХО ерунда какая-то написана. Может попался Код: plaintext 1.
вместо Код: plaintext 1.
В чем смысл - не знаю. Насколько понимаю результат будет одинаковый, разница только в синтаксисе. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:58 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
SQL2008Попался мне такой код Код: plaintext 1. 2. 3. 4.
В чем смысл обращения по ссылке? Почему нельзя так: Код: plaintext 1. 2. 3. 4.
Вопрос чисто академический. Итератор служит для итерирования и получения текущего значения, на который он указывает . Для второго служат перегруженные операторы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:03 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
SQL2008В чем смысл обращения по ссылке? Очевидно в том, что в контейнере лежат указатели, а не сами объекты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:18 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Более того: в контейнере лежат указатели на указатели. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:20 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovБолее того: в контейнере лежат указатели на указатели. ИМХО ТС напутал 21963520 , если it указатель на указатель, то это не скомпилируется Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:25 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima TDimitry SibiryakovБолее того: в контейнере лежат указатели на указатели. ИМХО ТС напутал 21963520 , если it указатель на указатель, то это не скомпилируется Код: plaintext 1.
+1 Стрелка ставится при указателе. То есть переписать код придется. А не что хочу то и ставлю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:30 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
SQL2008В чем смысл обращения по ссылке?точка если там структура. Стрелка если там указатель на структуру. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:32 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC SharpSQL2008В чем смысл обращения по ссылке?точка если там структура. Стрелка если там указатель на структуру. Всё. Не, вопрос о том что вместо стрелки it-> можно написать (*it). TCу непонятно зачем так пишут. Если честно, мне тоже интересно, как-то натыкался на такой синтаксис. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:37 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima TНе, вопрос о том что вместо стрелки *it->* можно написать *(*it).* TCу непонятно зачем так пишут. А ты попробуй написать "it->->DeviceCreated()" и послушай мнение компилятора по этому поводу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:40 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDima TНе, вопрос о том что вместо стрелки *it->* можно написать *(*it).* TCу непонятно зачем так пишут. А ты попробуй написать "it->->DeviceCreated()" и послушай мнение компилятора по этому поводу. Однако ловко ты мой пост пропатчил :) Ты внимательно попробуй прочитай первый пост, ИМХО ТС явно напутал: SQL2008 Код: plaintext 1.
В чем смысл обращения по ссылке? Перепутал стрелку и точку, т.е. it это обычный указатель, а не указатель на указатель. Иначе вопрос превращается в тупой: "почему нельзя менять рабочий код на нерабочий?" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:47 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima TИначе вопрос превращается в тупой: "почему нельзя менять рабочий код на нерабочий?" Ну так по-моему всё правильно и вопрос именно такой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:50 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima TPetroNotC Sharpпропущено... точка если там структура. Стрелка если там указатель на структуру. Всё. Не, вопрос о том что вместо стрелки it-> можно написать (*it). TCу непонятно зачем так пишут. Если честно, мне тоже интересно, как-то натыкался на такой синтаксис.вангую что это стиль С а не плюсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:51 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima T, У него пример компилируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:52 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Вот пример нагуглил обучающий http://cppstudio.com/post/9535/ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
ИМХО наверно преподаватели пытались показать равнозначность обоих вариантов, а нерадивые ученики тупо скопипастили в реальный код то, что больше понравилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 16:05 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima T, )))) Невозможно ничего скрыть сегодня в IT )) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 16:08 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Dima TВот пример нагуглил обучающий http://cppstudio.com/post/9535/ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
ИМХО наверно преподаватели пытались показать равнозначность обоих вариантов, а нерадивые ученики тупо скопипастили в реальный код то, что больше понравилось.Если бы it был указателем, то оно точно было бы эквивалентно. А тут надо еще убедиться, что операторы '->' и '*' перегружены так, что оно эквивалентно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 19:52 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
SQL2008Попался мне такой код Код: plaintext 1. 2. 3. 4.
В чем смысл обращения по ссылке? Почему нельзя так: Код: plaintext 1. 2. 3. 4.
Вопрос чисто академический. Итератор может быть классом, переопределяющим разные операторы. В конструкции (*it)-> внутри скобок доступ к объекту по итератору, и если от этого объекта делается доступ по указателю, то это, видимо, указатель. Во втором случае it. это может быть доступ к полю класса интератора, и там тупо нет такого метода. То есть где-то в коде наверное есть Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
И в первом случае it (в (*it)->) имеет тип vector<Controller*>::iterator, далее (*it) это Controller*, и поэтому доступ к методу DeviceCreated() есть. Во втором случае будет попытка обращения vector<Controller*>::iterator.DeviceCreated(), и ошибка. Сейчас нет возможности привести детали, но точно что переопределение оператора точки много где встречается для обращения к полям класса-указателя, а оператор стрелка в том же классе-указателе дает доступ к указываемому объекту. Итератор в этом смысле лишь вид указателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 23:41 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
teo609переопределение оператора точки много где встречается Ух ты... а мужики-то стандарт считает, что "The operators :: (scope resolution), . (member access), .* (member access through pointer to member), and ?: (ternary conditional) cannot be overloaded". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 00:19 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC SharpDima T, У него пример компилируется? Компилируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 17:14 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
teo609 И в первом случае it (в (*it)->) имеет тип vector<Controller*>::iterator, далее (*it) это Controller*, и поэтому доступ к методу DeviceCreated() есть. Во втором случае будет попытка обращения vector<Controller*>::iterator.DeviceCreated(), и ошибка. Сейчас нет возможности привести детали, но точно что переопределение оператора точки много где встречается для обращения к полям класса-указателя, а оператор стрелка в том же классе-указателе дает доступ к указываемому объекту. Итератор в этом смысле лишь вид указателя. Да. Скорее всего идея именно в перегрузке операторов. Реальной или планируемой в будущем при расширении платформы. Всем спасибо за дискуссию. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 17:23 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
SQL2008Скорее всего идея именно в перегрузке операторов. 21964087 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 20:31 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
Уоу... Всё совсем плохо, если гуру должны отвечать на такие детские вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 21:05 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC SharpDima Tпропущено... Не, вопрос о том что вместо стрелки it-> можно написать (*it). TCу непонятно зачем так пишут. Если честно, мне тоже интересно, как-то натыкался на такой синтаксис.вангую что это стиль С а не плюсов.А в чём разница между работой с указателями в Си и работой с указателями в С++? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2019, 14:33 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_dev, Дык ванговал же))) Неужели не угадал? Ну даай ещё раз. В плюсах работают (обращение к объекту) со стрелками и точками. А в Си со звездочками. Или его величество СИНТАКСИС. У тебя же выше и есть 2 варианта синтаксиса. А ты спрашиваешь в чем разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2019, 16:35 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_devА в чём разница между работой с указателями в Си и работой с указателями в С++? :)в Си сложно перегрузить оператор -> )) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2019, 16:37 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC Sharprdb_dev, Дык ванговал же))) Неужели не угадал? Ну даай ещё раз. В плюсах работают (обращение к объекту) со стрелками и точками.Нет такого в "плюсах"! :) В "плюсах" доступ к членам экземпляра структуры или класса ничем не отличается от доступа к членам экземпляра структуры в Си и осуществляется оператором '.' (точка), а доступ к членам структуры или класса через указатель на экземпляр структуры или класса осуществляется оператором '->'. Операторы взятия адреса '&<instance>' и разыменования указателя '*<ptrInstance>' в плюсах точно такие же, как в Си, а всё потому, что C++ наследует синтаксис Си со своими дополнениями и некоторыми оговорками. PetroNotC SharpА в Си со звездочками. Или его величество СИНТАКСИС. У тебя же выше и есть 2 варианта синтаксиса. А ты спрашиваешь в чем разница.Иди учить матчасть! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 14:03 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
egorychrdb_devА в чём разница между работой с указателями в Си и работой с указателями в С++? :)в Си сложно перегрузить оператор -> ))Это, наверное, потому, что в Си нет понятия методов структуры, а следовательно, нет и перегрузки этих методов. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 14:07 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_devC++ наследует синтаксис Си со своими дополнениями и некоторыми оговорками."открыл америку". Разве твой ответ противоречит моему? авторВ плюсах работают (обращение к объекту) со стрелками и точками. Вверху 2 варианта кода. Покажи какой пишешь ты из двух. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 14:27 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_devegorychпропущено... в Си сложно перегрузить оператор -> ))Это, наверное, потому, что в Си нет понятия методов структуры, а следовательно, нет и перегрузки этих методов. :)стакан полуналитый или полупустой? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 14:28 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC SharpВверху 2 варианта кода. Покажи какой пишешь ты из двух.Мне без разницы! Но если используется доступ к множеству членов на большом уровне инкапсуляции, то для улучшения восприятия исходного кода предпочитаю "урезать", разыменовывая указатель в именованную ссылку, после чего использую точку. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 15:41 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
PetroNotC Sharprdb_devпропущено... Это, наверное, потому, что в Си нет понятия методов структуры, а следовательно, нет и перегрузки этих методов. :)стакан полуналитый или полупустой?Относительно используемого объема пространства правильнее писать "заполнен на 50% объема" или "используется 50% объема стакана". :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 15:44 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_devМне без разницы!ну вот. А я когда не было С++ писал без стрелок. Сейчас со стрелками. rdb_devОтносительно используемого объема пространства правильнее писать "заполнен на 50% объема" или "используется 50% объема стакана". :) )))) Согласен. Всё относительно. Разошлись.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2019, 15:50 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
rdb_devegorychв Си сложно перегрузить оператор -> ))Это, наверное, потому, что в Си нет понятия методов структуры, а следовательно, нет и перегрузки этих методов. :)ну, эмулировать то можно, указатель на функцию запихай в структуру, вот тебе и метод) а вот перегрузки в Си нет, поэтому для Си код ( *it )->DeviceCreated(); и it.DeviceCreated(); эквивалентен, а в плюсах может быть и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 12:57 |
|
Вопрос к гуру С++
|
|||
---|---|---|---|
#18+
egorychrdb_devпропущено... Это, наверное, потому, что в Си нет понятия методов структуры, а следовательно, нет и перегрузки этих методов. :)ну, эмулировать то можно, указатель на функцию запихай в структуру, вот тебе и метод) а вот перегрузки в Си нет, поэтому для Си код ( *it )->DeviceCreated(); и it.DeviceCreated(); эквивалентен, а в плюсах может быть и нетОткуда функция DeviceCreated() будет знать - для какого экземпляра объекта она вызвана и зачем пихать в структуру указатель на эмуляцию "невиртуального метода", увеличивая размер структуры? Даже C++ так не делает. Просто определяем "bool DeviceCreated(struct MyStruct*)" и вызываем DeviceCreated(it), а если делать эмуляцию виртуальных методов, то в результате придётся писать вызов в виде: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 13:45 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017569]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 171ms |
0 / 0 |