На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 27 28 [29] 30 31 ... Последняя »  ( Перейти к последнему сообщению )  
> Развейте мои сомнения: упростится ли программирование при переходе от C к C++?
    Без noexcept копирует, да. Но так и надо.
    http://ideone.com/wd2k2k
      Цитата D_KEY @
      Без noexcept копирует, да. Но так и надо.

      Они почти все без noexcept
      А ну, да ты имел ввиду move-конструкторы
      Сообщение отредактировано: Олег М -
        Цитата Олег М @
        Они почти все без noexcept

        А чего тогда жаловаться на лишнее копирования? :)
          Цитата Flex Ferrum @
          А чего тогда жаловаться на лишнее копирования?

          Да, уже понял
            В расте, кстати, при перемещении объектов происходит, фактически, побитовое копирование :) Соответственно, и выделяться память в векторе при push_back-е может при помощи realloc-а.
              Цитата OpenGL @
              Соответственно, и выделяться память в векторе при push_back-е может при помощи realloc-а.

              Можно и в C++ что-то подобное использовать. Только нужна проверка, что данные не переместились.
              Сообщение отредактировано: shm -
                Цитата shm @
                А шо мешает так делать в C++?

                Наличие аллокаторов у контейнеров. :)
                  Цитата Flex Ferrum @
                  Наличие аллокаторов у контейнеров.

                  Ну это если речь только про стандартные контейнеры, то да.
                    Цитата Flex Ferrum @
                    Наличие аллокаторов у контейнеров.

                    Не только :) Класс в векторе может содержать в себе поля-указатели на другие свои поля. И в этом случае если realloc выдаст новый блок памяти, то все указатели внезапно начнут указывать куда-то в мусор. В расте же без unsafe такой указательный ад построить не получится.
                      Цитата shm @
                      Можно и в C++ что-то подобное использовать. Только нужна проверка, что данные не переместились.

                      Хотя с классической реализацией realloc такое не реализовать, т. к. при перемещении он потрет старый блок памяти. Только что-то более сложное с проверкой возможности расширения без перемещения.

                      Добавлено
                      Цитата OpenGL @
                      В расте же без unsafe такой указательный ад построить не получится.

                      А создать указатель на другой элемент тоже нельзя? Только по индексу?
                        Цитата shm @
                        А создать указатель на другой элемент тоже нельзя? Только по индексу?

                        Если быть совсем точным, то на самом деле можно их насоздавать как угодно - их разыменование это unsafe операция :)
                        А вот взятие ссылок (оно там называется "заимствованием") подчиняется определённым правилам, и да - взять ссылку на объект в векторе и передать её другому объекту в этом же векторе, равно как и создать объект со ссылками на свои же поля - не выйдёт без unsafe.
                          Цитата OpenGL @

                          Не только Класс в векторе может содержать в себе поля-указатели на другие свои поля. И в этом случае если realloc выдаст новый блок памяти, то все указатели внезапно начнут указывать куда-то в мусор.

                          Речь идет о частных случаях, которых очень много.
                            Цитата Олег М @
                            Речь идет о частных случаях, которых очень много.

                            В С++ есть отличный способ указать компилятору и библиотеке на то, что структуру можно безопасно копипастить из одного куска памяти в другой. Это сделать такую структуру POD-структурой. И этим способом можно (и нужно) пользоваться для всех "частных случаев". В остальных случаях - copy/move-конструкторы. И это правильно.
                            Сообщение отредактировано: Flex Ferrum -
                              Читаю вас, и понимаю - какая же ШИЗА этот ваш С++ :D
                                Цитата Астарот @
                                Читаю вас, и понимаю - какая же ШИЗА этот ваш С++

                                Ваш JavaScript - тоже та ещё травка. :D
                                Сообщение отредактировано: Flex Ferrum -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2177 ]   [ 15 queries used ]   [ Generated: 2.05.24, 17:31 GMT ]