В последнем листинге, кстати, было выяснено (но не известно точно почему), что:
assert(this != &temp); // assert if this is not a temporary
не имеет смысла, т.к. this все равно может оказаться temp, а проверить это нет возможности.
Необходимо самому сделать следующее:
if(this != &temp)
{
// 1. освобождаем ресурсы, занятые этим объектом
_buffer = nullptr;
// 2. берем данные из temp
_size = temp._size;
_buffer = std::move(temp._buffer);
_name = std::move(temp._name);
// 3. присванивание чего-либо temp будет препятствовать тому, чтобы деструктор
// освободил ресурсы, ранее занимаемые этим объектом
// temp._buffer = nullptr; <-- нет необходимости из-за использования std::move
temp._size = 0; // <-- в этом, соответственно, тоже нет необходимости
}
return *this;
Спасибо!
Вопрос на засыпку: «Почему писать про С++ не очень популярно?»
Я сейчас всего лишь заканчиваю 3 курс, но работаю по специальности, как раз программистом С++ (80% — в Qt). Так вот, когда-то давно, соответственно, вставал вопрос выбора основного языка, начинал изучать Java, но все таки С++ оказался роднее :)
В то же время я мониторил рынок, спрос на те или иные языки (СПб), и С++ ничем не уступал (в то время (2 года назад), да и сейчас вроде тоже) как Java, так и, например, C#. Это касается и количества предложений, и зарплат.
Так вот, что такого в С++ плохого, из-за чего следовало бы прямо сейчас продолжить учить джаву или начинать учить C#?)
Это скорее дело привычки, на самом деле auto как раз удобнее использовать как раз в качестве замены итераторов.
Заметно сокращает код и по-моему повышает его читабельность, конечно при условии понимания предыдущего когда и принципа работы итераторов, как таковых
У нас в компании, когда у кого-то день Рождения или еще какой-то праздник, во все офисы приносят тортики/пироги и т.д. поэтому заправляюсь ими)
Вот сейчас, в рабочее обеденное время, сижу ем тортик, пью чай и сижу на хабре xD
Дизайн телефона глаз радует (хотя напоминает iPhone)
Да и задумка классная, очень удобно в плане синхронизации для тех, кто пользуется и планшетом и смартфоном, хотя многие эту задумку опишут как «засунули лопату в лопату»)
g_codes.empty() используется для обработки очереди, если в ней есть ошибки, а g_notified — от ложных пробуждений и, по большому счету сделан для того, чтобы наглядно показать что дает вторая перегрузка wait()
1. Изначально была идея написать кроссплатформенный код, это следы той идеи)
2. Этого момента не усмотрел, но исправить не сложно
3. Посмотрев код, это можно реализовать как на С++, так и на любом другом языке, знакомый уже сделал всё тоже самое на js
Спасибо за конструктивные дополнения!
По поводу примера с перебрасыванием исключений: нет, указатель валидным не останется, поэтому в контейнер помещаются копии исключений (используя std::current_exception), а не указатели на них.
не имеет смысла, т.к. this все равно может оказаться temp, а проверить это нет возможности.
Необходимо самому сделать следующее:
Вопрос на засыпку: «Почему писать про С++ не очень популярно?»
Я сейчас всего лишь заканчиваю 3 курс, но работаю по специальности, как раз программистом С++ (80% — в Qt). Так вот, когда-то давно, соответственно, вставал вопрос выбора основного языка, начинал изучать Java, но все таки С++ оказался роднее :)
В то же время я мониторил рынок, спрос на те или иные языки (СПб), и С++ ничем не уступал (в то время (2 года назад), да и сейчас вроде тоже) как Java, так и, например, C#. Это касается и количества предложений, и зарплат.
Так вот, что такого в С++ плохого, из-за чего следовало бы прямо сейчас продолжить учить джаву или начинать учить C#?)
Заметно сокращает код и по-моему повышает его читабельность, конечно при условии понимания предыдущего когда и принципа работы итераторов, как таковых
Вот сейчас, в
рабочееобеденное время, сижу ем тортик, пью чай и сижу на хабре xDДа и задумка классная, очень удобно в плане синхронизации для тех, кто пользуется и планшетом и смартфоном, хотя многие эту задумку опишут как «засунули лопату в лопату»)
2. Этого момента не усмотрел, но исправить не сложно
3. Посмотрев код, это можно реализовать как на С++, так и на любом другом языке, знакомый уже сделал всё тоже самое на js
Мы в детском саду тоже аппликации верстали)
По поводу примера с перебрасыванием исключений: нет, указатель валидным не останется, поэтому в контейнер помещаются копии исключений (используя
std::current_exception
), а не указатели на них.