> Поддержка списков инициализации, т.е. передачи структуры или массива в виде списка значений. Например: для конструктора или функции Test можно указать шаблонный класс std::initializer_list и затем для инициализации использовать "Test testVar = {1, 2, 3, 4};" или "Test(1,2,3,4,5)";
Но зачем?
> Возможность автоматического назначения типа при указании ключевого слова "auto". Тип выбирается на основании анализа типа аргумента. Например, "auto otherVariable = 5;";
Но зачем?
> Реализация нового типа ссылок на временные объекты (Rvalue Referencea), объявляемые через выражение "type &&";
Ещё один вид указателей? Ссылок мало?
> Реализация ключевого слова "constexpr", позволяющего указать, что выражение (функция или конструктор) возвращает константу и данные выражения можно использовать как константы, например: "constexpr int GetFive() {return 5;}". В дальнейшем GetFive можно указать, например, при определении массива "int some_value[GetFive() + 7];";
Для этого всегда макросы были. Зачем?
> Ослаблены требования при определении типов простых данных. Например, как тип простых данных могут рассматриваться классы, при соблюдении ряда правил;
Я ведь всё равно не смогу использовать эллипсис? Зачем тогда?
> Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr.
Но зачем?
Я думал намного будет... Намного лучше будет это всё. И очень плохой язык, просто очень плохой язык! Я думал, намного лучше будет это всё.
werehuman
15.08.2011 05:08 Psi+
Do you really want to delete ?
ну что же ты идиот то такой. Вот что с людьми питон делает. 1. Что бы не городить конструкторы на 100 параметров, а красиво инициализировать. 2. Ту не знаю. 3.пока не в курсе что это вообще такое. 4. Что бы огонь спипчками разжигать, а не трутом и огнивом. Нехуй юзать говномакросы в ооп. 5. Не в курсе зачем, но причина точно есть. 6. См. 4. юзай свой недоязычек и молись на него
1. А порядок инициализации по каким критериям считать будешь?
3. Но как только станешь в курсе — с пеной у рта побежишь доказывать, что оно необходимо для жизни.
4. Плохое сравнение. Если нехуй юзать — надо их вообще взять и убрать. Ой, не получается? Так нехуй выёбываться.
5. См. 3.
6. Я на кучу недоязычков молюсь, лишь бы кто-нибудь вытеснил плюсовое убожество с рынка.
1. В таком порядке, в котором они в классе объявлены — как и со списками инициализации в конструкторе. По поводу пены у рта — не побегу, потому что если не нужно — не принимали бы, а если ты не осилил, то конечно язык говно. Правильное сравнение — вот от них и избавлются понемногу. Потому что всякие быдлокодеры с си головного мозга не осилили конст переменные и продолжают жрать макросоговно. Язык оопшный и нехуй в нем юзать всякие пережитки процедурщины. Это, блядь, эволюция и своя облась применения. А не недоязычки можешь не надеяться — вымрут как и все остальное, а плюсы останутся.
"оопшный" он будет, когда в него наконец-то рефлексию добавят. А пока что он "копшный"
*то есть никогда
> Списки инициализации
Это безусловно прекрасный язык, ведь если мы поменяем местами объявление полей класса, то весь код перестанет быть работоспособным. Из сишечки они это, видите-ли, переняли, тридцать лет перенимали и наконец-то сделали шаг в сторону от "коп". Правда, это шаг назад, но не суть важно.
В сишке часто работали со структурами на уровне указателей. Отделить восемь байт со смещением четыре в структуре на си — это норма. Там была куча причин следить за порядком следования записей в структуре.
В плюсах до этого момента было пофигу, как следуют записи, но браво! теперь не пофиг. И всё ради того, чтобы пользователь постоянно скроллил свой текстовый редактор в private-сектор и записывал в строчечку значения для инициализации.
ебаный язык, они даже описать не могут правильно. На википедии пишут, что это "структура или массив могут быть созданы передачей списка аргументов в порядке, соответствующем порядку определения членов структуры", а в примере оказывается, что они наконец-то изобрели замену эллипсису. Некрасивую, правда.
потрясающе, я не зря писал этот текст. Читаем дальше до "Универсальная инициализация" и видим как раз этот случай. Костыли.
ты не осилил, по крайней мере 1,2,3,4 пункты
>> Возможность автоматического назначения типа при указании ключевого слова "auto". >>Тип выбирается на основании анализа типа аргумента. Например, "auto otherVariable = 5;";
>>Но зачем?
Чтобы не писать myns::mynestedns::mytype::mynestedtype<param>::iterator it; например.
>> Поддержка списков инициализации, т.е. передачи структуры или массива в видесписка значений. Например: для конструктора или функции Test можно указать шаблонный класс std::initializer_list и затем для инициализации использовать "Test testVar = {1, 2, 3, 4};" или "Test(1,2,3,4,5)";
Сахар.
Вместо std::vector v(5); v[0] = 1; v[1] = 2; ... etc.
> Реализация нового типа ссылок на временные объекты (Rvalue Referencea), объявляемые через выражение "type &&";
Ещё один вид указателей? Ссылок мало?
Кури move semantics. rvalue нужны для реализации move-конструкторов и move-присваиваний (они передают право владения объектом). man boost::unique_future, например.
>>> Реализация ключевого слова "constexpr", позволяющего указать, что выражение (функция или конструктор) возвращает константу и данные выражения можно использовать как константы, например: "constexpr int GetFive() {return 5;}". В дальнейшем GetFive можно указать, например, при определении массива "int some_value[GetFive() + 7];";
>>Для этого всегда макросы были. Зачем?
Это я так понимаю, больше для метапрограммирования. Да, скорее всего не нужно.
>>> Вместо макроса NULL для обозначения нулевого указателя введено ключевое слово nullptr.
Но зачем?
"The macro NULL is implementation-defined C++ null pointer constant in this International Standard".
в новых плюсах отказываются от макросов в стандарте, это пережитки от C.
По большому счету, можно продолжать писать 0 везде.
+100500
няша. Объяснил то, что я не знал
> Чтобы не писать myns::mynestedns::mytype::mynestedtype<param>::iterator it; например
Это я уже почитал, понял. Главное, чтобы компилятор не срал пятиэтажными логами от буста.
> Сахар.
> Вместо std::vector v(5); v[0] = 1; v[1] = 2; ... etc.
Как я понял, не всё так просто.
> Кури move semantics. rvalue нужны для реализации move-конструкторов и move-присваиваний (они передают право владения объектом). man boost::unique_future, например.
Проще было сделать std::vector::move_from(vector &).
> в новых плюсах отказываются от макросов в стандарте
Это будет о-о-о-очень тяжело. Ну пусть попытаются.
> Кури move semantics. rvalue нужны для реализации move-конструкторов и move-присваиваний (они передают право владения объектом). man boost::unique_future, например.
Проще было сделать std::vector::move_from(vector &).
Это не совсем так, rvalue != reference. Временный объект нельзя сделать reference, а rvalue можно, fill the difference.
move-семантика очень помогает при возврате из функции тяжелого объекта, например, вектора. В таком случае вместо копирования временный объект просто перейдет под владение переменной, к которой происходит присваивание вызова. (Вызовется move-версия конструктора или оператора присваивания).
а чем плох auto_ptr?
Но да, move-конструкторы и move-присваивания, генерируемые по-умолчанию, могут нарушать инварианты, установленные для обычных версий. Поэтому стоит их писать руками, чтобы избежать оплошностей.
Пример:
#define _GLIBCXX_DEBUG // включаем отладочный режим — для проверки выхода за границы вектора
#include <iostream>
#include <vector>
struct X
{
// invariant: v.size() == 5
X() : v(5) {}
~X()
{
std::cout << v[0] << std::endl;
}
private:
std::vector<int> v;
};
int main()
{
std::vector<X> y;
y.push_back(X()); // X() rvalue: copied in C++03, moved in C++0x
}
с одной стороны выглядит удобно, с другой — вносят очередную путаницу. Ведь по смыслу то же самое делают указатели.
#nogos/16 auto_ptr вообще плох, у него весьма странная семантика передачи владения. Лучше уж упомянуть scoped_ptr. (Даже в Google C++ Style Guide настоятельно рекомендуют забыть об auto_ptr — http://google-styleguide.googlecode.com/...
Если объект не в динамической памяти, то от smart-pointer непримением в чистом виде (только если нельзя задать deleter), например.
Опять же, вся штука в самой move-семантике. Она четко отражает то, что мы хотим сделать с временными объектами. Ты предлагаешь просто реализовать похожее поведение существующими средствами. Можно, но не так очевидно.
Довольно популярная нынче концепция в бустовых либах: Moveable + Noncopyable + NonAssignable + DefaultConstructable. Т.е. объект можно только создать с нуля и перекидывать между move-вызовами. В таком случае ты точно уверен, что где-нибудь случайно не скопируешь свой объект, который копировать не следует (большие размеры, логическая целостность, etc.)
Да ты тупой шоле.
=)
гопота набижала
ты, кстати, не бегал нихуя сегодня, так?
Я проснулся и почитал спеки.
2. Type inference — это удобно. Пусть даже такой тупой, как в плюсах.
5 — соображения типобезопасности, 3 — выражение move semantics через язык, оптимизация операций копирования в тех случаях, когда исходные данные после копирования не нужны.
Попизди, рефлексия рассматривается как вопрос о следующих стандартах.
А как ты предлагаешь определять порядок инициализации, если один член зависит от другого?
это будет кстати та ещё тема для троллинга (вас). От рефлексии сильно упадёт скорость работы.
все равно быстрее питона будет
Да съеби ты нахуй из плюсов уже, все равно ты ниасилил, путаница-хуютаница тебе.
Какие милые безосновательные высказывания.
это будет джава
олол, джва одинаковых коммента теперь и у меня
Што.
джава.
если у тебя 10 параметрво — все через констурктор передавать?
И што? Хуита.
да
Олсо, типичный пример попсового ниасилятора — ныть о какой-то там рефлексии, когда выкинули такую няшу, как концепты.
ну че. После таких конструкторов как раз и говорят, что плюсы говно
но гораздо лучше было бы как в джаве — разрешить изменять const-переменные в теле самого конструктора
блядь. Нахуй тогда конст, если его можно изменять?
ага, до генериков тоже не дотянула. Я ж говорю, плюсцы двигаются в сторону джавы.
потому что ты а) плохо читаешь, б) никогда не видел ничего, кроме плюсцоы
видел. Например паскаль, делфи (OPascal), перл. И да — я считаю, что другие языки мне пока не нужны. И после того, как я буду чувствовать себя увереннее в плюсах, я точно не начну изучать недоязыки
Хуйня и костыли.
пока что ты только перечислил ещё три недоязыка
на фоне питона они даже больше языки
костыли — это вывод функционала парсера в std. Видите ли, есть теперь у меня эллипсис, но пиши std::initializer_list
особенно... кто? и почему? Ты же даже не знаешь, о чём ты говоришь.
типичные признаки клинического плюсоеба: а) я не знаю другие языки, мне сказали что плюсы самый лудший езык и я буду дрочить его всю жизнь, б) я запускал программы на петонах и джавах, они тормозят, значит это недоязыки, они ТОРМОЗЯТ. Лечить бесполезно.
у джавы проблема с линупсовыми jvm. Под прыщами оно жрёт в несколько раз больше, чем на винде, проверял.
У джавы проблемы, она говно.
нет, не она.
вообще-то это ты говно, и это доказанный факт, в отличие от. Ну а раз ты говно, то ты видишь всё в коричневом цвете.
Не доказанный, хуй тебе.
Просто в какой-то момент сановцы перестали делать язык и начали делать альтернативу сишарпу. Те же дженерики в джаве — говнище.
в чём выражается их говнистость?
Притянутый за уши костыль, все равно пополам с object'ом. Если ты действительно хочешь поговорить об этом, то ближе к вечеру могу оппробовать нагуглить пруфы.
да я прекрасно знаю, как они внутри выглядят. Единственное, в чём ты их обвиняешь — так это в том, что никаких проверок нету. С одной стороны да, штука нестрогая. С другой стороны — даже с этим набором она более фичастая. Просто она позволяет прострелить себе ногу, как и всё в плюсцах. Может быть, когда-нибудь они доделают генерики... хотя вряд ли, джава тоже катится в сраное говно.
Наконец-то ты согласился.
...при этом плюсцы из говна не вылезали
сановцы просто перестали что-то делать, а когда очнулись — пришлось догонять сисярп. Но не плюсы же.
есть великолепный сисярп, но все мы знаем, почему его не следует использовать
Нет, не знаем, расскажи. У тебя микрософтофобия?
да. А у тебя?
Нет. Я не пользуюсь тем, что говно. Сишарп, в общем-то, неплохой язык, просто мне лично субъективно не нравится. А так ок вполне.
я вижу стереотипы в твоей голове... Ты ведь ставишь языкам метки "говно" и "просто не нравится" в зависимости от их евангелистов, да?
Нет. Мне не нравится сам сишарп, я пробовал с ним извращаться. А про евангелистов ничо не знаю.
а почему тебе пхп не нравится?
Пушо говно. И лень про это писац.
а остальные языки на букву п?
C# — это хорошо спроектированная ява. Приходилось кодить, как на том, так и на этом. После явы освоить C# можно за пару недель. Очень радует всякий сахар вроде делегатов. Грамотно включается managed code. В яве это дикий ад и содомия на таком фоне (JNI, спецификации на хэдеры, тошнота). Проблемные места явы — это глупые дженерики с затиранием информации о типе (ради обратной совместимости с кодом из ранних версий). В то время, как майкрософт просто зачастую кладет на то, что код для .Net 1.1 не заработает в .Net 4.0. В универе одногруппник на своем вендоебном смартфоне постоянно переставлял фреймверк, в зависимости от того, что он хочет запустить.
сразу видно, кто готов для тырпрайза, а кто нет
Чем должен нравиться PHP ? Ни потоков, ни стандартов именования, ни какой-то единой парадигмы и стиля в исходниках. Язык раздробства. Начиная от названий функций и заканчивая укуренным ООП, упертым из явы и плюсов.
я дедфуда спрашивал >_>
Как будто я спорю.
ОП — хуй, тред не читал.
Но зачем? Давно обсосано же.
ОП — тред, хуй не читал.
подтверждаю
Да я так, разговор поддержать (с) поручик
просто в твоей адекватности я не сомневаюсь <_<
А в моей сомневаешься что ли, уебыш?
начнём с того, что ты пиздоглазое мудило
Ты хуй, твоя мать похапе, а отец купил макбук.
ОП по-прежнему хуй.
как думаешь, невежливых следует блеклистить или нет?
auto самое полезное, концепты сразу запилили и так ничего и не добавили, а вообще ты эпичный слоупок, это всё уже 2 года юзают все.
Не понимаю о чём вы. Вчера ко мне приходил программист, настраивал Виндоус и чистил от вирусов, я его спросил: "Как дела?", он сказал, что хорошо. Не знаю, по какому поводу вы тут бугуртите и срётесь.
очевидно ты заплатил ему больше, чем плюсоебы получают за месяц
больше плюсоебов получают только джавоебы
лолшто? по такой логике пыхпёры ещё больше получают, ага
пыхперы — нищеброды
не обращай внимания, это подпадает под первый признак плюсоеба, ему сказали что плюсы самый лудший езык, платят больше всех и все бабы дадуд, и они будут его дрочить всю жизнь
да нет же, по твоей логике они больше всех получают!
ты просто не осилил, вот и бугуртишь. А насчет оплаты — буквально сегодня смторел вакансии.
смотря где. Если в конструкторе — по старинке, через : хуй(хуй), жопа(жопа). Если при создании экземпляра — то хз...