@ProCxx

Страница 2300 из 2477
Alex Фэils?︙
25.08.2018
21:39:17
30 августа с 19:00 по 21:00 планируется небольшая встреча участников C++ в формате "Drink-Up". В рамках встречи планируются обсуждения языка C++, холивары и, конечно же, принятие на грудь немного пива во славу ISO/IEC 14889 и WG21. Встреча будет в пабе "Guns & Bears", располагающемся по адресу: Москва, ул. Новослободская, д. 46. Мы будем на первом этаже. Подробности – по ссылке: https://www.meetup.com/ru-RU/Moscow-C-User-Groups/events/254005466/ #cpp #CppUserGroup #meetup #drinkup #Москва

Вячеслав
25.08.2018
21:51:00
почему я могу иметь доступ к функции из namespace’а без указания через имя namespace’а? при этом я не использую using namespace и другой такой функции нет

Alex Фэils?︙
25.08.2018
21:52:03
мб есть using ns::fn, где ns - твой неймспейс, а fn - твоя функция?

Вячеслав
25.08.2018
21:52:14
нет

Google
Alex Фэils?︙
25.08.2018
21:52:35
а кинь фрагмент кода на какой-н. pastebin

Вячеслав
25.08.2018
21:55:58
https://pastebin.com/zRbDi9c8

Egor
25.08.2018
22:00:48
с неймспейсами хитрые правила разрешения имён, это где-то напрямую в стандарте лучше смотреть

Побитый
25.08.2018
22:14:58
почему я могу иметь доступ к функции из namespace’а без указания через имя namespace’а? при этом я не использую using namespace и другой такой функции нет
Вангую, что это ADL. Компилятор видит эту функцию, если ты вызываешь её с аргументами из того-же пространства имён, что и сама функция.

А, код уже кинули. Щас посмотрим)

Anton
25.08.2018
22:16:18
Пример без ADL как раз, это точно работает?

Вячеслав
25.08.2018
22:17:11
в параметрах функции так же используются типы из того же namespace

Anton
25.08.2018
22:17:32
А кто нибудь может пояснить зачем вообще добавили ADL в язык? Сократить вызов функций?

Alex Фэils?︙
25.08.2018
22:18:19
да; например std::cout так тырит оператор «

Вячеслав
25.08.2018
22:18:59
спасибо за наводку…не знал про ADL

Google
Anton
25.08.2018
22:20:19
да; например std::cout так тырит оператор «
И стоило ли оно того? Может тут ситуация где explicit is better than implicit.

Alex Фэils?︙
25.08.2018
22:21:12
И стоило ли оно того? Может тут ситуация где explicit is better than implicit.
я не могу сейчас конструктивно ответить на этот вопрос; сильно устал. Могу предварительно сказать ,что "да", т.к. писать std::operator «() очень геморно

Господин
25.08.2018
22:21:51
Всё верно? Есть объекты в памяти. Ссылка это адрес объекта. Указатель это абсрактный объект, модель(так-то это просто число, то же самое). Он указывает на объект. Ссылка владеет объектом, а указатель ссылается на объект в памяти. Есть владение объектом и есть ссылка(указатель) на объект.

Указатель это и есть адрес. Как, по сути, и ссылка. Все дело в семантике. Один якобы ссылается на объект, а другой им владеет.

Anton
25.08.2018
22:23:28
я не могу сейчас конструктивно ответить на этот вопрос; сильно устал. Могу предварительно сказать ,что "да", т.к. писать std::operator «() очень геморно
Не спорю, но создаётся впечатление что сначала придумали << а потом подгоняли правила чтобы это заработало. А это как-то не очень. Сделали бы print и делов то

Alex Фэils?︙
25.08.2018
22:24:43
Не спорю, но создаётся впечатление что сначала придумали << а потом подгоняли правила чтобы это заработало. А это как-то не очень. Сделали бы print и делов то
надо почитать на эту тему "дизайн и эволюция C++", там Бьярне говрит ,почему вообще выбрал оператор « для печати

Побитый
25.08.2018
22:24:47
Указатель это и есть адрес. Как, по сути, и ссылка. Все дело в семантике. Один якобы ссылается на объект, а другой им владеет.
Ссылка ничем не владеет. Указатель называется владеющим, если для него вызывается delete.

Anton
25.08.2018
22:24:48
Побитый
25.08.2018
22:25:09
Это сахар для указателя!
Нет. Это к указателю не имеет никакого отношения.

Anton
25.08.2018
22:25:42
Господин
25.08.2018
22:26:39
Проверяю источник. как понимаю, всё неверно.

Alex Фэils?︙
25.08.2018
22:27:22
тащемта вы оба правы про ссылки. ссылка - это и доп. имя для хероты, и херня, концептуально похожая на константный указатель, но с автоматическим разыменованием в качестве сахарка

Побитый
25.08.2018
22:30:04
Ссылка может и похожа на указатель. Только указатель это объект, который занимает память, а ссылка это не объект, памяти не занимает, нельзя создать массив ссылок по этой же причине.

Alex Фэils?︙
25.08.2018
22:30:26
ну, ссылка может занимать память, иногда :D

Побитый
25.08.2018
22:31:16
ну, ссылка может занимать память, иногда :D
Ну с этим я погорячился, но в принципе всё так.

Google
Alex Фэils?︙
25.08.2018
22:32:04
ок, хорошо :) пришли к консенсусу

Господин
25.08.2018
22:34:01
окей,указатель имеет тот же тип что и объект, на адресс которого указывает?

Alex Фэils?︙
25.08.2018
22:51:43
он со звездочкой еще в придачу как минимум

чот у нас тут филиал супапро ночью, модеры будут ругаться(

В общем, указателей на что-то бывает по меньшей мере, 4 вида (если одного уровня): просто указатель (int *p); указатель на константу (const int *p) неизменяемый указатель (int * const p) неизменяемый указатель на константу (const int * const p). Также вместо (или вместе с) конст можно миксовать volatile Вот пример: https://wandbox.org/permlink/5QS7HupxKCQRJp3D

ща примерчик кину еще (и проверю, не ошибся ли я сам ночью)

Господин
25.08.2018
23:02:18
а это как интерпритировать? const int* const const p неизменяемый указатель на неизменяемую константу?

Alex Фэils?︙
25.08.2018
23:02:25
да

Max
25.08.2018
23:02:36
https://habr.com/post/100104/

Alex Фэils?︙
25.08.2018
23:02:36
константа сама по себе считается неизменяемой

Господин
25.08.2018
23:02:42
да я рофлю)

Max
25.08.2018
23:03:11
Как раз для субботнего вечера чтиво )

Господин
25.08.2018
23:03:20
const int* const p = new const int ;

а это как?

Max
25.08.2018
23:06:25
Это вообще законно?

Alex Фэils?︙
25.08.2018
23:07:10
вбейте в конпелятор, проверьте

Господин
26.08.2018
00:18:44
читаю конпелятор как коноплятор

Google
ofee
26.08.2018
00:49:51
Создайте структуру, у которой поля - ссылки и посмотрите размер
А кто-то может объяснить, почему ссылки увеличивают размер структуры?

Egor
26.08.2018
00:50:12
это же указатель на данные

он занимает свои 4,8,... байт

Ilia
26.08.2018
02:09:43
А кто-то может объяснить, почему ссылки увеличивают размер структуры?
Потому что они тоже занимают определенную память. По сути ссылка - это константный, всегда автоматически разименованный указатель, можно в первом приближении так думать про нее. Она занимает определенное место в памяти, размером с указатель

Alex
26.08.2018
09:38:20
О, я перепутал чаты

ofee
26.08.2018
09:39:14
Потому что они тоже занимают определенную память. По сути ссылка - это константный, всегда автоматически разименованный указатель, можно в первом приближении так думать про нее. Она занимает определенное место в памяти, размером с указатель
Я их тоже всегда как-то считал лишь алиасами, я уже чуть позже задумался и понял всё это, ибо не будь они указателями, наверное, было бы затруднительно их использовать для передачи в функцию, например

Тебе в supapro надо на самом деле...
Спасибо, буду и там. Я всё же ещё немного не определился насколько хорошо знаю C++, местами довольно хорошо, а местами пробелы в знаниях из-за недостатка практики или из-за того, что над некоторымии вещами просто не задумываешься, как сейчас

Max
26.08.2018
10:26:22
А кто-то может объяснить, почему ссылки увеличивают размер структуры?
"References are not objects; they do not necessarily occupy storage, although the compiler may allocate storage if it is necessary to implement the desired semantics (e.g. a non-static data member of reference type usually increases the size of the class by the amount necessary to store a memory address)." (c) cppref

Matwey
26.08.2018
10:28:14
Но не всегда, естественно

Friedrich
26.08.2018
10:28:38
А когда они не реализуются как указатели?

Matwey
26.08.2018
10:28:58
Когда коноплятор может заоптимизировать

int x = 3; int& y = x; y = 4;

Friedrich
26.08.2018
10:30:32
int x = 3; int& y = x; y = 4;
Я, признаться, думал, что мы говорим про случаи, когда ссылка внутри структуры вдруг реализуется не как указатель.

Страница 2300 из 2477