powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / virtual methods
25 сообщений из 356, страница 13 из 15
virtual methods
    #39653832
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestrdb_devНу так и доказывай, что это "чистая правда"Это ты меня пытаешься в чём-то убедить (что в C++ действительно всё то, что действительно в C, т.к. C++ наследуется от C или вроде того). Ну вот и доказывай, что Введение к чему-то обязывает.Неа! :) Я просто хочу увидеть ссылку на тот фрагмент официальных правил написания стандартов ISO где утверждается, то, что ты тут нам пересказываешь!
...
Рейтинг: 0 / 0
virtual methods
    #39653844
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Это ты меня пытаешься в чём-то убедить (что в C++ действительно всё то, что действительно в C, т.к. C++ наследуется от C или вроде того). Ну вот и доказывай, что Введение к чему-то обязывает.Неа! :) Я просто хочу увидеть ссылку на тот фрагмент официальных правил написания стандартов ISO где утверждается, то, что ты тут нам пересказываешь!И кто тебе мешает?
...
Рейтинг: 0 / 0
virtual methods
    #39653877
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestrdb_devНеа! :) Я просто хочу увидеть ссылку на тот фрагмент официальных правил написания стандартов ISO где утверждается, то, что ты тут нам пересказываешь!И кто тебе мешает?Твой "Чайник Рассела", очевидно же!
Бремя доказательства лежит на утверждающем.
...
Рейтинг: 0 / 0
virtual methods
    #39653902
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
И кто тебе мешает?Твой "Чайник Рассела", очевидно же!
Бремя доказательства лежит на утверждающем.Это ты пытаешься тут доказать про действие правил из C в C++.
...
Рейтинг: 0 / 0
virtual methods
    #39653937
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Это ты пытаешься тут доказать про действие правил из C в C++.Мне не надо ничего доказывать! За меня это сделало "Введение в стандарт C++" 21460144 .Там даже не написано такого (что правила действуют).
Написано, что C++ "based" на C. Что это "based" означает? Java тоже based на C и C++.
...
Рейтинг: 0 / 0
virtual methods
    #39653941
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestТам даже не написано такого (что правила действуют).
Написано, что C++ "based" на C. Что это "based" означает? Java тоже based на C и C++.Перечитывай до просветления, может излечишься!
"C++ - это язык программирования общего назначения, основанный на языке программирования C, как описано в ISO/IEC 9899:2011 Programming languages — C (далее-стандарт C). C++ предоставляет множество возможностей, помимо предоставляемых C, включая дополнительные типы данных, классы, шаблоны, исключения, пространства имен, перегрузку операторов, перегрузку имен функций, ссылки, операторы управления свободными хранилищами и дополнительные библиотечные средства."
...
Рейтинг: 0 / 0
virtual methods
    #39653944
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestНаписано, что C++ "based" на C. Что это "based" означает? Java тоже based на C и C++.В каком месте спецификации Java написана подобная бредятина? Можно ссылочку?
...
Рейтинг: 0 / 0
virtual methods
    #39653947
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestТам даже не написано такого (что правила действуют).
Написано, что C++ "based" на C. Что это "based" означает? Java тоже based на C и C++.Перечитывай до просветления, может излечишься!
"C++ - это язык программирования общего назначения, основанный на языке программирования C, как описано в ISO/IEC 9899:2011 Programming languages — C (далее-стандарт C). C++ предоставляет множество возможностей, помимо предоставляемых C, включая дополнительные типы данных, классы, шаблоны, исключения, пространства имен, перегрузку операторов, перегрузку имен функций, ссылки, операторы управления свободными хранилищами и дополнительные библиотечные средства." А почему тогда, например, variable length arrays в C++ не разрешены? Они разрешены в C, на котором C++ based (что, якобы, должно означать, что всё, что верно в C — верно и в C++).
...
Рейтинг: 0 / 0
virtual methods
    #39653958
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestА почему тогда, например, variable length arrays в C++ не разрешены? Они разрешены в C, на котором C++ based (что, якобы, должно означать, что всё, что верно в C — верно и в C++).С какого перепугу? :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  for (UINT i = 1; i < 100; i++)
  {
    int sz = std::rand() & 0x0F;
    if (!sz) sz = 16;
    double a[sz];
    printf("Byte size of array: %llu\r\n", (size_t)sizeof(a));
  }
...
Рейтинг: 0 / 0
virtual methods
    #39653966
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЯ вообще не понимаю, какая джава головного мозга должна быть в голове человека, предположившего, что работа с памятью через приведенный указатель в С/С++ это UB (т.е. то без чего С/С++ нафик не нужен еще и не работает).
Тут не стандарт надо обсуждать, а куда его направить лечиться ))

но в целом-то он прав. Лично я, всю жизнь думал, что арифметика над указателями описывается просто как pointer + sizeof( type ). Но драфт на который была ссылка (ровно как и MSDN) арифметику над указателями описывает __исключительно__ как навигацию в массиве (при этом исключительно в приделах массива, с исключением для элемента следующего за самым последним). Т.ч. в данном случае "java головного мозга" у тех, кто пишет драфты пытаясь из C сделать нечто java-ООП-универсально-образное.

В общем-то, "работа с памятью через приведенный указатель не к исходному типу", явно платформенно зависимое решение, которое может работать, а может и нет.

То, что char и int все же формально разные типы данных, надеюсь никто спорить не будет.

IMHO & AFAIK

P.S. Топик получился феерический. Вроде начался с одного невинного идиотского вопроса, а уже 13 страниц все друг в друга какашки кидают. На мой взгляд, топик нужно занести в аналы истории, где-то рядом с темой "бритье подмышек" из fido конференции )))
...
Рейтинг: 0 / 0
virtual methods
    #39653969
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestЯ вижу ты совсем нулевой...
https://wandbox.org/permlink/SrXdy1eWXerw4BGL
Код: plaintext
1.
2.
error: ISO C++ forbids variable length array 'a' [-Wvla]
     double a[sz];
                ^
Ты можешь мне не верить, но я собрал свой код на свежем компиляторе g++, который, де-факто, является стандартом среди компиляторов C++, с указанием стандарта C++11 и выполнил полученный бинарный исполняемый модуль получив ожидаемый результат. Можешь смело потерять ссылку на ту байду, в которой проверяешь ты.
...
Рейтинг: 0 / 0
virtual methods
    #39653978
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestЯ вижу ты совсем нулевой...
https://wandbox.org/permlink/SrXdy1eWXerw4BGL
Код: plaintext
1.
2.
error: ISO C++ forbids variable length array 'a' [-Wvla]
     double a[sz];
                ^
Ты можешь мне не верить, но я собрал свой код на свежем компиляторе g++ https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++ .
Передай своему свежему g++ флаг -pedantic-errors
...
Рейтинг: 0 / 0
virtual methods
    #39653990
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevЛично я, всю жизнь думал, что арифметика над указателями описывается просто как pointer + sizeof( type ).Ты неправильно думал! То, о чем ты думал, отсутствует также и в Си. Арифметика указателей всегда учитывает размер типа данных на экземпляры которых ссылается указатель. Если указатель указывает на double, то (P)+1 указывает на следующий double, а не на более старший байт (для little-endian) или более младший (для big-endian) байт того же самого double.

Leonid KudryavtsevНо драфт на который была ссылка (ровно как и MSDN) арифметику над указателями описывает __исключительно__ как навигацию в массиве (при этом исключительно в приделах массива, с исключением для элемента следующего за самым последним). Т.ч. в данном случае "java головного мозга" у тех, кто пишет драфты пытаясь из C сделать нечто java-ООП-универсально-образное.Вот что об этом написано в стандарте C++ . Ничем не отличается от Си.

Leonid KudryavtsevВ общем-то, "работа с памятью через приведенный указатель не к исходному типу", явно платформенно зависимое решение, которое может работать, а может и нет.Тут ты тоже ошибаешься.
...
Рейтинг: 0 / 0
virtual methods
    #39653991
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestПередай своему свежему g++ флаг -pedantic-errorsПередал, ничего не поменялось! :)
...
Рейтинг: 0 / 0
virtual methods
    #39653995
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_deva guestПередай своему свежему g++ флаг -pedantic-errorsПередал, ничего не поменялось! :)А нет, пардон! Поменялось.
Ну и зачем мне выставлять этот флаг? :)
...
Рейтинг: 0 / 0
virtual methods
    #39653996
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devrdb_devпропущено...
Передал, ничего не поменялось! :)А нет, пардон! Поменялось.
Ну и зачем мне выставлять этот флаг? :)Чтобы отключить нестандартные расширения. VLA — это расширение g++. VLA не разрешены стандартом.
...
Рейтинг: 0 / 0
virtual methods
    #39654002
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestrdb_devпропущено...
А нет, пардон! Поменялось.
Ну и зачем мне выставлять этот флаг? :)Чтобы отключить нестандартные расширения. VLA — это расширение g++. VLA не разрешены стандартом.Кто тебе сказал, что это поведение "нестандартное"? :) Тебе же гнусы чёрным по белому написали:
"Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++."

Надеюсь, тебе не надо объяснять, что означают сокращения C99 и C90 ?
...
Рейтинг: 0 / 0
virtual methods
    #39654006
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Чтобы отключить нестандартные расширения. VLA — это расширение g++. VLA не разрешены стандартом.Кто тебе сказал, что это поведение "нестандартное"? :) Тебе же гнусы чёрным по белому написали:
"Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++."

Надеюсь, тебе не надо объяснять, что означают сокращения C99 и C90 ?Ты не отличаешь C99 от C++?
...
Рейтинг: 0 / 0
virtual methods
    #39654007
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Чтобы отключить нестандартные расширения. VLA — это расширение g++. VLA не разрешены стандартом.Кто тебе сказал, что это поведение "нестандартное"? :) Тебе же гнусы чёрным по белому написали: "error: ISO C++ forbids variable length array".
...
Рейтинг: 0 / 0
virtual methods
    #39654018
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestrdb_devпропущено...
Кто тебе сказал, что это поведение "нестандартное"? :) Тебе же гнусы чёрным по белому написали: "error: ISO C++ forbids variable length array". Это означает лишь одно - в стандарте C++ явно оговорили данное отличие от наследуемого Си. Что тебя, опять, не устраивает?
...
Рейтинг: 0 / 0
virtual methods
    #39654024
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev....Арифметика указателей всегда учитывает размер типа данных на экземпляры которых ссылается указатель.....
Об этом я знаю ))) sizeof(type) я и написал.

Но draf то опысывает как раз по другому. Не "учитывается размер", а то, что будет выбран корректный элемент в массиве. Т.е. ограничивает всю "арифметику" исключительно перемещением по массиву (при этом, еще и с запретом выхода за пределы массива)
...
Рейтинг: 0 / 0
virtual methods
    #39654025
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
"error: ISO C++ forbids variable length array". Это означает лишь одно - в стандарте C++ явно оговорили данное отличие от наследуемого Си. Ты вроде был за то, что VLA разрешены. Allowed красным выделял.
В каком разделе стандарта C++ явно оговорено данное отличие?
...
Рейтинг: 0 / 0
virtual methods
    #39654029
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestrdb_devпропущено...
Это означает лишь одно - в стандарте C++ явно оговорили данное отличие от наследуемого Си. Ты вроде был за то, что VLA разрешены. Allowed красным выделял.
В каком разделе стандарта C++ явно оговорено данное отличие?Тебе гнусы написали, что VLA разрешены в C90 режиме компилятора g++. Чего тебе еще?
...
Рейтинг: 0 / 0
virtual methods
    #39654030
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevно в целом-то он прав. Лично я, всю жизнь думал, что арифметика над указателями описывается просто как pointer + sizeof( type ). Но драфт на который была ссылка (ровно как и MSDN) арифметику над указателями описывает __исключительно__ как навигацию в массиве (при этом исключительно в приделах массива, с исключением для элемента следующего за самым последним).
Кусок памяти и ссылка (в широком смысле: имя, указатель, ссылка) на него с информацией о типе, это и есть объект, в том числе массив, если тип - массив. Абсолютно не важно какие там конструкторы и в каком порядке вызывались. От этого массив не перестает быть массивом. Если конструктор не вызван, то объект просто неинициализированный, обращение к его содержимому - UB. Если нет такого обращения, то никакого UB нет. Нет никакого правила, что все элементы массива должны быть инициализированы при создании массива, а иначе это не массив.

Поэтому, если есть кусок памяти в котором может находиться массив заданного размера, и есть указатель на массив, то с точки зрения юзера этого указателя - это и есть массив, и дальше к этому и применяются вышеприведенные правила про то что нельзя обращаться за пределы массива, или нельзя обращаться элементам не инициализировав их.

Все остальный фантазии прозвучавшие в этом топике про то что "массива нет" - бред сивой кобылы.
...
Рейтинг: 0 / 0
virtual methods
    #39654032
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Ты вроде был за то, что VLA разрешены. Allowed красным выделял.
В каком разделе стандарта C++ явно оговорено данное отличие?Тебе гнусы написали, что VLA разрешены в C90 режиме компилятора g++.Ты совсем недавно писал, что C это часть стандарта C++ и поэтому в C++ разрешены VLA. Даже демонстрировал код, который якобы должен был это подтвердить.
rdb_devЧего тебе еще?Покажи, где стандарт C++ явно оговорил запрет VLA.
...
Рейтинг: 0 / 0
25 сообщений из 356, страница 13 из 15
Форумы / C++ [игнор отключен] [закрыт для гостей] / virtual methods
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]