Здравствуйте, reversecode, Вы писали:
R>домохозяйственнве проекты где вы сами себе главный это не работа программистом С++
Ну пока такой вариант лучше чем просто зубрить по книгам, скажем так.
Тем более оценивает качество то все-равно реальный заказчик и все косяки все-равно выползут.
Я хотя и выпендриваюсь тут, но к работе отношусь ответственно — максимально все проверяю, стараюсь не допускать косяков. Прогоняю через PVS и внимательно изучаю каждый варнинг.
R>кто вас собеседовал по знаниям С++ прежде чем вам дал ту работку ? ой никто ? ну я так и знал
Да я вообще против этих собеседований. У меня подход другой — давай сразу работать и в работе мы друг-друга проверим — подходим или нет. Собеседование ничего не дает. Есть спецы по прохождению собеседований — а толку?
R>давайте вы откроете djinn,киевский вы наш и подадитесь на пару вакансий где вас прособеседуют хотя бы джуны ?
Здравствуйте, Shmj, Вы писали:
S>Утечку памяти воткнул случайно, т.к. еще не отработал привычку очистки. Потом увидел но решил не исправлять — т.к. хороший анализатор должен и это увидеть.
Так вот знай, за "привычку очистки" в приличных конторах бьют линейкой по рукам так же точно, как и за утечку, которую ты "воткнул случайно". А могут и прощальный подсрачник выписать. Я тебе в третий раз даю эту ссылку: RAII. Почитай, это найважнейший принцип, без которого не пишется ни одна современная программа на С++.
Здравствуйте, rg45, Вы писали:
R>Вот именно, использование new там было вообще не в тему — даже в контесте его вопроса. Это лишь линший раз демонстрирует в какую кучу свалены мухи и котлеты в его голове. И сам он эту кучу разгребать не хочет, а тащит ее нам, чтоб мы разбирались в лабиринтах его сложного Квалиа.
У меня как раз вопрос присваивания стековой памяти, которая освобождается при выходе из функции.
R>Полностью согласен. Я и сам проходил по маршруту C++ -> C#. И знаю многих людей, которые преодолели этот путь без особого труда и в кратчайшие сроки. А вот в обратную сторону... что-то ни одного не припоминаю. Сплошные стоны и сопли.
Я, дело в том что, вынужден "марать руки" в С++ — никуда от этого не деться. Хотя проект то не на С++ у нас. Просто внешние библиотеки нужно чуток править.
И понял что это все-равно кому-то нужно будет делать и никто не хочет — все боятся. И чем дальше — тем все меньше в живых и при памяти остается людей, кто может это делать.
Здравствуйте, Shmj, Вы писали:
R>>умение запускать компилятор С++ и корректировать код С++ R>>это не знания С++
S>Добавлять новый функционал, который работает на 3 разных типах ОС — норм?
Упомянутый здесь RussianFellow, полагаю, тоже не забесплатно работал. Он свой код здесь даже как-то засветил. Душераздирающее зрелище было.
Здравствуйте, Shmj, Вы писали:
PM>>Запускаем CI c разными вариантами sanitizers которые встроены в GCC и Clang
S>Вот ради этого и стоило создать пост, пусть и подвергнувшись многочисленному высмеиванию. sanitizers, теперь буду знать что это существует.
В мире C++ много чего существует, и сеньоры на вашем проекте должны бы по-хорошему про это знать. Если самый опытный там — это вы, то есть куча вещей, которые придется изучить. Они уже собраны в списки типа "awesome c++", "modern c++ best practices"
Для проектов есть шаблоны, где уже подобраны средства для сборки, тестов, управления зависимостями, автоформатирования кода, статических анализаторов, санитайзеров, и прочих инструментов, используемых при разработке на C++
Здравствуйте, Shmj, Вы писали:
S>Это было во времена вашей молодости. Сейчас не проблема уволить и найти чела под приятные языки — а где вы будете искать того, кто согласится на C++?
Не ты выбираешь С++, С++ выбирает тебя.
Сэкономь себе время, а коллегам нервы. Иди сразу на "приятные языки".
Здравствуйте, rg45, Вы писали:
S>>Я не призываю так писать — мой вопрос лишь в статистическом анализаторе, который такие вещи сможет обнаружить.
R>Какие "такие"? Ты нахера утечку памяти туда воткнул, когда твой вопрос касался указателей и ссылок на локальные переменные, чье время жизни меньше времени жизни ссылок и указателей?
Утечку памяти воткнул случайно, т.к. еще не отработал привычку очистки. Потом увидел но решил не исправлять — т.к. хороший анализатор должен и это увидеть.
TB>Ты так говоришь будто тебе в напряг на форумах тусоваться.
Тусоваться — не в напряг. Помогать ответами — не в напряг. Но когда мало того, что задают глупые вопросы пачками, а потом говорят, то тебя используют — желание пропадает отвечать конкретно ему.
Похожая история с RussianFellow — я ему поначалу активно помогал, хотя многие над ним смеялись или не отвечали. И потом я понял, почему. Ну и тоже стал скипать его банальные вопросы.
Здравствуйте, DiPaolo, Вы писали:
DP>Тусоваться — не в напряг. Помогать ответами — не в напряг. Но когда мало того, что задают глупые вопросы пачками, а потом говорят, то тебя используют — желание пропадает отвечать конкретно ему.
Так мало того, у меня утвердилось мнение, что он вообще не читает то, что ему пишут. Ты перед ним распинаешься, а он КА-А-АК ляпнет потом... Сидишь и думаешь: "перед кем бисер метал?". Усваивает только наезды и оскорбления, похоже.
Здравствуйте, Shmj, Вы писали:
R>>в данном случае ваши знания 0
S>Чем вы докажите свою компетентность, чтобы делать такие заявления?
Ух ты, а ты дерзить умеешь, оказывается.
Видишь ли какое дело, не он ведь один тебе высказывает подобную мысль. Многие участники форума тебе уже высказали примерно то же самое. Форума, на который ты приходишь за помощью. Обращаясь к нам за помощью, ты сам же и признаешь нашу компетентность. Вот такая штука выходит.
Здравствуйте, reversecode, Вы писали:
R>когда конкретный вопрос надо задать аут оф контекс(reply было не ему), надо же как то обратиться R>увы приходиться переходить к собеседнику на "ты" R>на "вы" в таких случаях как то слишком почетно
R>если бы репли было на его сообщение, было бы на "вы"
Да откуда вообще пошла эта шиза докапываться до "тыканья" в интернете? По-моему "ты" было нормой до того момента как изза распространения технологий в интернет набижали климактические тетки и жирные бизнесмены депутаты с губожопыми любовницами.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, Shmj, Вы писали:
S>Это было во времена вашей молодости. Сейчас не проблема уволить и найти чела под приятные языки — а где вы будете искать того, кто согласится на C++?
Изредка находятся, все-таки, прикинь! И, как правило, это такие люди, которым приятно работать именно на C++ со всей его сложностью и недостатками. А ты, как обычно, пытаешься натянуть свой больной прыщик на всю вселенную.
P.S. И, как бы то ни было, лучше вообще никого не нанимать, чем взять на работу профнепригодное убожество. От такого вот
Здравствуйте, so5team, Вы писали:
S>Хотя есть маркер, который наводит на мысль, что ТС так может и в продакшен пИсать
Причем, жирный такой маркер — круг вопросов, которые он поднимает, указывает на то, что он не вникал и не собирается. Я ему дважды уже пытался намекать, что пора бы познакомиться с RAII, но это его лишь раздражает: http://rsdn.org/forum/cpp/8515546.1
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, Shmj, Вы писали:
S>>Ну и сразу вопрос — каким плагином или чем вы находите подобные вещи?
BFE>Нативные массивы не должны использоваться. BFE>Голые/сырые указатели не должны использоваться. BFE>Тогда подобные вещи искать не придётся крайне редко.
Ну перепишешь ты этот код на std::array и ссылки. Лучше станет? Нет
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
S>Вы хотите сказать в этом программа корректна? Она же мусор выводит на экран при сборке в VS, к примеру.
Я уже запутался. Ты смешал в кучу два или три разных топика. Изначально речь шла про ворсинки статического анализа. Я показал, какой ворнинг выдает clang-analyzer.
Далее твой вопрос про освобождение стековой памяти. На что я посоветовал почитать про стыковую память и память в куче, потому что налицо пробел в понимании работы памяти в плюсах.
Выше есть мои коменты в коде. Там вроде все понятно.
Здравствуйте, Shmj, Вы писали:
R>>Вот именно, использование new там было вообще не в тему — даже в контесте его вопроса. Это лишь линший раз демонстрирует в какую кучу свалены мухи и котлеты в его голове. И сам он эту кучу разгребать не хочет, а тащит ее нам, чтоб мы разбирались в лабиринтах его сложного Квалиа.
S>У меня как раз вопрос присваивания стековой памяти, которая освобождается при выходе из функции.
Усыпить, чтоб не мучился
Ты правда ни хера не понял в моих словах? Скажи, что ты просто прикидываешься, ну пожалуйста!
Здравствуйте, T4r4sB, Вы писали:
S>>Утечку памяти воткнул случайно, т.к. еще не отработал привычку очистки. TB>Нахрена ты вообще туда new впендюрил, если тебе достаточно вернуть объект по значению?
Задумка была — проиллюстрировать проблему присвоения стековой памяти и использовать его после удаления ее из стека.
что такое санитайзер и что он на это может, знает каждый в топике, кроме вас
а с вас смеются потому что вы пиявка
паразитируете на других только бы самому не разбираться
у вас проблемы в само обучением и денег нет даже на ютуб репетитора-учителя ?
но вы не ответили на самый главный вопрос топика >а что в С# настолько все плохо и нет работы, что шарписты набежали в тему С++ ?
Здравствуйте, Shmj, Вы писали:
>>>а что в С# настолько все плохо и нет работы, что шарписты набежали в тему С++ ?
S>Я, пока был в горячей точке под бомбами, — начал думать о состоянии IT глобально. Все равно электричества не было и делать было нечего. S> ... S>Проанализировал все это и понял что от С++ все-равно никуда не уйти.
Ход мысли и вывод так себе, но это не так важно.
Важно то, что для вменяемого человека, пришедшего к такому выводу, следующим логичным шагом будет взять и почитать книги, а не браться за работу на С++ и заваливать форумы спамом.
Здравствуйте, reversecode, Вы писали:
R>с вашими знаниями С++ вам никакие предложения не грозят R>вы завалите все собеседования по С++, я вам гарантирую
Я уже второй проект делаю на С++. Успешно — мотивация выше когда платят реальные деньги. Пусть и ниже рынка, но для обучения сойдет.
Так что ты там гарантировал?
R>хотите улучшать С++, ютуб видео курсы вас ждут R>не хотите ютуб, ищите репетитора
Одно другому не мешает.
R>само обучение через тролинг на форуме вам не поможет его изучить вообще никак
Для человека важна эмоциональная составляющая. Когда немного потроллил, облажался — уже лучше запомнишь.
Запоминаетя то что связано с эмоциями. Сухие данные хороши только для вычислительной машины — она может за миллисекунду запомнить столько, что у человека уйдут десятки лет.
А тут уже: R>шмыга ты в бодишопе или на вольных хлебах ?
Это специальная поправка для пациента или вы познакомились?
"Коллега", конечно, всячески подталкивает к неуважительному к себе отношению, но так-то выглядит как двойные стандарты.
TB>У тебя же в коде ещё и всякий мусор типа оператора new, кстати нахрена он нужен после 11 года?
А реализацию двунаправленного списка получится написать без new?
Без того чтобы все указатели сделать shared?
Другое дело, что необходимость в использовании именно new стала встречаться куда реже.
Но это опять оверхед на ровном месте "лишь бы без new".
Нормально можно писать и дергая new напрямую, просто больше писанины и контроля, больше шансов выстрелить себе в ногу.
В некоторых случаях явный new оказывается самым простом способом обойтись без оверхеда (тот же двунаправленный список),
хотя требуется очень аккуратно проверять код.
Кстати, в Rust вроде бы используется концепция владения -- как там реализуют двунаправленый список? Кто кем владеет?
S>Ну и сразу вопрос — каким плагином или чем вы находите подобные вещи?
Qt Creator сразу дает предупреждение:
Potential leak of memory pointed to by 't' [clang-analyzer-cplusplus.NewDeleteLeaks]
Скорее всего, в CLion и VS можно как-то настроить. Как минимум, можно прикрутить стороннюю тулзу через настройки. Например, при сохранении файла прогонять статик аналайзером.
Что использовать:
— PVS
— cppcheck
— аналайзер clang
Здравствуйте, Shmj, Вы писали:
S>Это было во времена вашей молодости. Сейчас не проблема уволить и найти чела под приятные языки — а где вы будете искать того, кто согласится на C++?
Сущности "приятно" и "неприятно" относятся к категории субъективных ощущений и напрямую завязаны на твои навыки в той или иной области. Если ты не умеешь плавать и ездить на велосипеде, то приятными эти занятия тебе, конечно же, не будут казаться. Но абсолютизирование своих личных фобий на весь мир — это просто признак небольшого ума.
Здравствуйте, Shmj, Вы писали:
S>Это было во времена вашей молодости. Сейчас не проблема уволить и найти чела под приятные языки — а где вы будете искать того, кто согласится на C++?
а что в С# настолько все плохо и нет работы, что шарписты набежали в тему С++ ?
Здравствуйте, rg45, Вы писали:
R>Причем, жирный такой маркер — круг вопросов, которые он поднимает
Вопросы-то ладно. Я сам когда в новую тему погружаюсь формулирую такие вопросы, от которых затем самому стыдно становится, когда какое-то понимание достигается.
Я про другое. ТС же вроде уже несколько месяцев как C++ мучает. Я так понимаю, что ему даже за это платят.
Но при этом он даже свой пример не может записать в таком виде, чтобы не возникало вопросов из категории "но что за фигня? можно же проще!"
Я бы от человека, который несколько месяцев изучает более-менее современный C++ ждал бы что-то вроде:
но не вот эту вот простыню из стартового сообщения.
R>Сладостные грёзы о "приятных языках", где можно какать находу, где за тобой все приберут и подотрут, мешают погружению в пучины противного C++.
Может это мое искаженное восприятие реальности, но по моим наблюдениям, если человек начинал учиться программировать на языках с GC и не прошел изначально через Си или C++ (или классический Паскаль, или даже Modula-2 или Ada), то переучивание дается с трудом, и не всем
Это не к тому, что C++ такой сложный, а C++ники какие-то особенные. Просто программирование на языках без GC требует других привычек и лучше бы, чтобы эти привычки формировались в самом начале.
Здравствуйте, so5team, Вы писали:
S>Но при этом он даже свой пример не может записать в таком виде, чтобы не возникало вопросов из категории "но что за фигня? можно же проще!"
Вот именно, использование new там было вообще не в тему — даже в контесте его вопроса. Это лишь линший раз демонстрирует в какую кучу свалены мухи и котлеты в его голове. И сам он эту кучу разгребать не хочет, а тащит ее нам, чтоб мы разбирались в лабиринтах его сложного Квалиа.
S>Может это мое искаженное восприятие реальности, но по моим наблюдениям, если человек начинал учиться программировать на языках с GC и не прошел изначально через Си или C++ (или классический Паскаль, или даже Modula-2 или Ada), то переучивание дается с трудом, и не всем S>Это не к тому, что C++ такой сложный, а C++ники какие-то особенные. Просто программирование на языках без GC требует других привычек и лучше бы, чтобы эти привычки формировались в самом начале.
Полностью согласен. Я и сам проходил по маршруту C++ -> C#. И знаю многих людей, которые преодолели этот путь без особого труда и в кратчайшие сроки. А вот в обратную сторону... что-то ни одного не припоминаю. Сплошные стоны и сопли.
Здравствуйте, DiPaolo, Вы писали:
S>>Ну и сразу вопрос — каким плагином или чем вы находите подобные вещи?
DP>Qt Creator сразу дает предупреждение: DP>
DP>Potential leak of memory pointed to by 't' [clang-analyzer-cplusplus.NewDeleteLeaks]
А на то что тут c->V1 = t; — присваивается стековая область памяти, которая при выходе из функции как бы считается освобожденной?
S>но не вот эту вот простыню из стартового сообщения.
Нужно было уточнить как раз — меня больше интересовал вопрос присваивания стековой памяти, которая освобождается при выходе из фукнции, переменной которая в куче.
S>Нужно было уточнить как раз — меня больше интересовал вопрос присваивания стековой памяти, которая освобождается при выходе из фукнции, переменной которая в куче.
Здравствуйте, DiPaolo, Вы писали:
DP>Я уже запутался. Ты смешал в кучу два или три разных топика. Изначально речь шла про ворсинки статического анализа. Я показал, какой ворнинг выдает clang-analyzer.
Больше интересовал вопрос варнинга именно при присвоении стековой памяти.
DP>Далее твой вопрос про освобождение стековой памяти. На что я посоветовал почитать про стыковую память и память в куче, потому что налицо пробел в понимании работы памяти в плюсах.
Нет, именно в этом изначальный вопрос был — почему не выдается варнинг при присвоении стековой памяти переменной, которая явно выносит ее за пределы доступности.
DP>Выше есть мои коменты в коде. Там вроде все понятно.
Вы, похоже, тоже не заметили этой проблемы — увидели только что память не освобождена — а проблему присвоения стековой памяти — не заметили?
S>Вы, похоже, тоже не заметили этой проблемы — увидели только что память не освобождена — а проблему присвоения стековой памяти — не заметили?
Не заметил. Я просто скопипастил то, что выдал статик аналайзер, о чем и был изначальный вопрос. Почему статический анализатор в моем случае не показывает ворнинг там — хз.
Здравствуйте, T4r4sB, Вы писали:
TB>Ну перепишешь ты этот код на std::array и ссылки. Лучше станет? Нет
Станет лучше или нет — это смотря кому, но по крайней мере будет работать:
#include <array>
#include <iostream>
#include <memory>
#include <string>
class C1
{
public:
std::shared_ptr<const std::array<char, 2>> V1;
};
std::shared_ptr<C1> fun2()
{
std::shared_ptr<std::array<char, 2>> t = std::make_shared<std::array<char, 2>>();
std::array<char, 2>& ref = *t;
ref[0] = 't';
ref[1] = '\0';
std::shared_ptr<C1> c = std::make_shared<C1>();
c->V1 = t;
return c;
}
int main()
{
auto t = fun2();
std::cout << t->V1->data() << "\n";
}
#include <iostream>
#include <memory>
#include <string>
struct C1
{
C1(const std::string& str) : V1{str}{}
const std::string V1;
};
std::shared_ptr<C1> fun2()
{
std::string t = "t\0";
std::shared_ptr<C1> c = std::make_shared<C1>(t);
return c;
}
int main()
{
auto t = fun2();
std::cout << t->V1 << "\n";
}
Здравствуйте, pilgrim_, Вы писали:
_>PVS, более человеческое предупреждение _><source>:16:1: warning: V507 Pointer to local array 't' is stored outside the scope of this array. Such a pointer will become invalid.
Прикольно, если переписать исходный пример нормально, с unique_ptr, PVS не выдает предупреждение. А вот GCC 13 -- выдает https://gcc.godbolt.org/z/d87ohc4dE
Здравствуйте, so5team, Вы писали:
S>Прикольно, если переписать исходный пример нормально, с unique_ptr, PVS не выдает предупреждение. А вот GCC 13 -- выдает S>https://gcc.godbolt.org/z/d87ohc4dE
Нет в мире совершенства , да и GCC почему-то только с оптимизацией выдаёт предупреждение.
Здравствуйте, rg45, Вы писали:
R>>>Вот именно, использование new там было вообще не в тему — даже в контесте его вопроса. Это лишь линший раз демонстрирует в какую кучу свалены мухи и котлеты в его голове. И сам он эту кучу разгребать не хочет, а тащит ее нам, чтоб мы разбирались в лабиринтах его сложного Квалиа.
R>Ты правда ни хера не понял в моих словах? Скажи, что ты просто прикидываешься, ну пожалуйста!
Я не призываю так писать — мой вопрос лишь в статистическом анализаторе, который такие вещи сможет обнаружить.
Здравствуйте, Shmj, Вы писали:
S>Я не призываю так писать — мой вопрос лишь в статистическом анализаторе, который такие вещи сможет обнаружить.
Какие "такие"? Ты нахера утечку памяти туда воткнул, когда твой вопрос касался указателей и ссылок на локальные переменные, чье время жизни меньше времени жизни ссылок и указателей? А я скажу нахера — просто в голове у тебя полная каша. И вместо того, чтоб что-то читать и разбираться, ты тащишь всех своих тараканов сюда.
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, rg45, Вы писали:
R>>Вот именно, использование new там было вообще не в тему — даже в контесте его вопроса. Это лишь линший раз демонстрирует в какую кучу свалены мухи и котлеты в его голове. И сам он эту кучу разгребать не хочет, а тащит ее нам, чтоб мы разбирались в лабиринтах его сложного Квалиа.
S>У меня как раз вопрос присваивания стековой памяти, которая освобождается при выходе из функции.
Одно из необходимых умений программиста — это способность составлять МИНИМАЛЬНЫЙ пример, иллюстрирующий проблему.
У тебя же в коде ещё и всякий мусор типа оператора new, кстати нахрена он нужен после 11 года?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, T4r4sB, Вы писали:
TB>Нахрена ты вообще туда new впендюрил, если тебе достаточно вернуть объект по значению?
Потому что программист на си шарп напишет программу на си шарп на любом языке программирования.
P.S. В си шарп нет возможности выбирать способ возврата из функций. Каким образом будет возвращаться тот или иной объект раз и навсегда прошито в типе объекта. Все типы делятся на две категории — ссылочные типы (reference types) и типы-значения (value types). В общем, там много всяких памперсов напридумано. Только очень часто случается, что эти памперсы не могут покрыть всю жопу и тогда появляются разного рода костыли: боксинг, in/out/ref параметры, nullable типы, недо-шаблоны, недо-деструкторы, недо-RAII и прочее уродство. В общем, "язык приятный во всех отношениях".
Здравствуйте, Shmj, Вы писали:
TB>>Нахрена ты вообще туда new впендюрил, если тебе достаточно вернуть объект по значению?
S>Задумка была — проиллюстрировать проблему присвоения стековой памяти и использовать его после удаления ее из стека.
Это как-то отвечает на вопрос: "Нахрена ты вообще туда new впендюрил"?
Здравствуйте, Shmj, Вы писали:
S>Задумка была — проиллюстрировать проблему присвоения стековой памяти и использовать его после удаления ее из стека.
Тогда почему ты не удосужился вычистить лишнее из примера? Этот вопрос не относится к знанию того или иного языка. Это общая инженерная культура, блин! Где твоя грёбаная культура нахрен?!
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, Shmj, Вы писали:
S>Вот ради этого и стоило создать пост, пусть и подвергнувшись многочисленному высмеиванию. sanitizers, теперь буду знать что это существует.
Не только ради этого. Переснать использовать это гребаное new! Кресты это не шарпик. Оператор new устарел в том смысле в котором ты им пользуешься. И аллокация в куче у тебя тут нахрен не нужна
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, so5team, Вы писали:
S>Здравствуйте, T4r4sB, Вы писали:
TB>>мусор типа оператора new, кстати нахрена он нужен после 11 года?
S>Если не брать в рассмотрение placement new, то разве что для создания объектов с private/protected конструкторами.
Мне казалось что для этого используются статик методы, создающие объект
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, T4r4sB, Вы писали:
S>>Если не брать в рассмотрение placement new, то разве что для создания объектов с private/protected конструкторами.
TB>Мне казалось что для этого используются статик методы, создающие объект
Простенький пример:
#include <memory>
class manager;
class worker {
friend class manager;
int i_;
worker(int v) : i_{v} {};
public:
int i() const noexcept { return i_; }
};
class manager {
public:
int do_something() {
std::unique_ptr<worker> in{ new worker(0) };
return in->i_;
}
};
int main() {
manager o;
return o.do_something();
}
В manager::do_something не получится использовать std::make_unique, т.к. конструктор у worker-а приватный.
И не важно, будет ли do_something статическим или нет.
Здравствуйте, so5team, Вы писали:
TB>>мусор типа оператора new, кстати нахрена он нужен после 11 года? S>... то разве что для создания объектов с private/protected конструкторами.
Да и тут во многих случаях (если я правильно понимаю, речь про make_shared/make_unique) необязательно. Но я тоже, бывает, делаю через new в таких случаях.
ну или если конкретный тип умного (или неумного) указателя может быть разным в шаблоне. Вроде такого(иллюстративно):
Здравствуйте, so5team, Вы писали:
TB>>Мне казалось что для этого используются статик методы, создающие объект S>Простенький пример: S>[...]
В этом примере место создания `unique_ptr` находится вне `worker`, хоть и в дружественном классе.
T4r4sB предполагает, что такое как бы и должно решаться статик методами (и решается, но с оговорками, см. комментарии):
class worker {
private:
int i_;
worker(int v) : i_{v} {};
public:
static std::unique_ptr<worker> Create(int v) {
#if 0
// This one fails because `make_unique` tries to access private Ctorreturn std::make_unique<worker>(v);
#else// We are enforced to use `new` in this case.return std::unique_ptr<worker>{new worker(v)};
#endif
}
};
т.е. проблема в том, что нам нужно вызвать `make_unique<worker>`, а уж он-то и не может добраться к нашему закрытому конструктору.
Решается либо через new, как в примере, либо через passkey idiom
Сделать `make_unique<worker>` другом, вроде как, нельзя.
Здравствуйте, serg_joker, Вы писали:
_>т.е. проблема в том, что нам нужно вызвать `make_unique<worker>`, а уж он-то и не может добраться к нашему закрытому конструктору.
Да.
_>Решается либо через new, как в примере, либо через passkey idiom
Здравствуйте, reversecode, Вы писали:
R>теперь то вас никто не бомбит R>да и свет есть постоянно R>можно же закинуть этот не понятный вам С++ и вернутся к вашей деятельности ?
Лучше иметь меньше денег, но больше перспектив и предложений.
домохозяйственнве проекты где вы сами себе главный это не работа программистом С++
кто вас собеседовал по знаниям С++ прежде чем вам дал ту работку ? ой никто ? ну я так и знал
давайте вы откроете djinn,киевский вы наш и подадитесь на пару вакансий где вас прособеседуют хотя бы джуны ?
результатом поделитесь в отдельном треиде на ктыве
желательно сразу в разделе — юмор
тыкать мне не надо, к частью мы не знакомы
резюмируйте что именно вы изучили через ваши набросы ?
смогут ли эти ваши знания подтвердить собесудуюшие вас люди ?
то есть делаем вывод — вы паразитирующий тролль пиявка, который никаких знаний так и не получил из своих набросов
кроме тех что легко гуглятся
но гугль не для вас
Здравствуйте, reversecode, Вы писали:
R>само обучение через тролинг на форуме вам не поможет его изучить вообще никак
Фигня, я на геймдеве так кресты и изучил до приемлемого уровня. Вот чисто создавал темы в стиле "ваши кресты говно потому что на них нельзя делать так-то"
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, DiPaolo, Вы писали:
S>>Для человека важна эмоциональная составляющая. Когда немного потроллил, облажался — уже лучше запомнишь.
DP> это называется паразитированием или использованием других людей. Дополнительный аргумент в лично мою сформировавшуюся позицию больше тебе не помогать.
Ты так говоришь будто тебе в напряг на форумах тусоваться.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, Shmj, Вы писали:
S>Ну пока такой вариант лучше чем просто зубрить по книгам, скажем так.
S>Я хотя и выпендриваюсь тут, но к работе отношусь ответственно — максимально все проверяю, стараюсь не допускать косяков. Прогоняю через PVS и внимательно изучаю каждый варнинг.
S>Да я вообще против этих собеседований. У меня подход другой — давай сразу работать и в работе мы друг-друга проверим — подходим или нет. Собеседование ничего не дает. Есть спецы по прохождению собеседований — а толку?
Пообещай хотя бы, что про RAII почитаешь, когда-нибудь?
Здравствуйте, reversecode, Вы писали:
R>с вашими знаниями С++ вам никакие предложения не грозят R>вы завалите все собеседования по С++, я вам гарантирую
К сожалению, рынок труда сложился так, что даже последние бездари в состоянии найти работу. По крайней мере, могли раньше.
Особенно поспособствовали этому аутсорс-компании, где прибыль формируется из разницы между ставками "за голову" (в рассматриевом случае — "за тело"), выставляемыми заказчику, и зарплатой.
Более того, с такого персонажа компания может даже заработать больше, если умудрится продать его как "сениора" (а таки да, умудряются), а тело готово работать "ниже рынка".
Я в таком работал, видел много примеров. Но на С++ проекты у нас догадывались всё-таки фильтровать.
Здравствуйте, reversecode, Вы писали:
R>такое может прокатить только на апворке или условном аутсорсе
А похоже, что ТС как раз в каком-то аутсорере и работает. Попал туда благодаря знаниям другого ЯП (того же C#, к примеру).
Далее его уже как имеющегося бойца продают очередному заказчику. Не так уж часто кто-то со стороны заказчика исполнителей собеседует.
Ну или он в каком-то российском интеграторе работает (что-то типа того же аутсора, только вид в профиль). Сперва трудился на каких-нибудь C# проектах. Сейчас на него и плюсовую работу вешают.
Т.е. ему уже не нужно собеседования проходить, он уже внутри какого-то контура, а продаваны из этого контура его впаривают клиентам. Возможно задорого.
Здравствуйте, reversecode, Вы писали:
R>умение запускать компилятор С++ и корректировать код С++ R>это не знания С++
Добавлять новый функционал, который работает на 3 разных типах ОС — норм?
R>собеседование это независимая инстанция которая может подтвердить ваши знания
Я знаю что такое собеседования, сам их проводил. Не проходил а проводил. И знаю что это бесполезно.
Умение проходить собеседования — это отдельный навык, время на который мне даже тратить не хочется. Это нужно отдельно поднатореть под достаточно однотипные задачи, пособирать отзывы, посидеть на сайтах типа LeetCode. Пустая трата времени в общем.
Самое лучше собеседование — это покажи свой код.
Но даже это не гарантирует что чел. будет работать. Может знать теорию, а работать ленится и одни отмазки лепит. Или же занимается любимым велосипедом а не решает задачи бизнеса. Начинаешь его пинать чтобы не велосипед делал а решал задачи — обижается.
R>в данном случае ваши знания 0
Чем вы докажите свою компетентность, чтобы делать такие заявления?
вы мне напоминаете меня в детстве
когда я был маленьким и только увидел С++ компилятор
я фиксил большие проекты как мне казалось(1мб сорс кода)
банальным запуском компилятора и разбором ошибок который он выдает
знаний по С++ у меня было на уровне 0
читая вас сейчас, понимаю что я мог бы тогда с уверенностью заявить что я программист С++
причем успешный, поскольку сбилденные программы запускались и работали
ваши знания 0 потому что их не может никто ни подтвердить ни проверить
собеседование это один из вариантов доказать ваши знания
вашего кода по тех двух С++ проектах которые вы якобы сделали тоже никто не видит
добавить пару функций это не знания С++
когда конкретный вопрос надо задать аут оф контекс(reply было не ему), надо же как то обратиться
увы приходиться переходить к собеседнику на "ты"
на "вы" в таких случаях как то слишком почетно
если бы репли было на его сообщение, было бы на "вы"
как только интернет стал больше чем он был, сразу в обиход пришло "вы"
что бы когда общаешься с маньяком или каким другим преследуемым законом
аналитика "органов" не сцапала вас за подельника
и к вам не набежали не нужные люди по месту жительства
я думал что обьяснил?
когда идет репли-репли 1к1, то на "вы"
когда репли идет через третье лицо, то можно на "ты", потому что обращение идет аут оф контекст
я писал репли на so5team и обратится к шмыге на "ты", аналитика органов такое не просчитывает(пока еще)
так что в данном случае я хейтер шмыги
ладно, сдаюсь
он живет в соседнем подъезде
у него бородатая жена и много много шимжат
все над ними издеваются на районе
Здравствуйте, so5team, Вы писали:
S>Упомянутый здесь RussianFellow, полагаю, тоже не забесплатно работал. Он свой код здесь даже как-то засветил. Душераздирающее зрелище было.
S>Так что не показатель.
Это дело лично каждого. Если чел. видит для себя в этом смысл — почему нет? Ведь большая часть живущих особо ни на что не влияют и без них ход истории не особо изменится. Если чел. не в высшей лиге — это не значит, что он не имеет права на существование.
Здравствуйте, Shmj, Вы писали:
S>>Упомянутый здесь RussianFellow, полагаю, тоже не забесплатно работал. Он свой код здесь даже как-то засветил. Душераздирающее зрелище было.
S>>Так что не показатель.
S>Это дело лично каждого.
Что именно? Напомню, что мой комментарий касался того, можно ли считать "сделанные" проекты на C++ подтверждением знаний C++.
S>Если чел. видит для себя в этом смысл — почему нет? Ведь большая часть живущих особо ни на что не влияют и без них ход истории не особо изменится. Если чел. не в высшей лиге — это не значит, что он не имеет права на существование.
В огороде бузина, в Киеве дядка, в вашей башке говно. Вот примерно так выглядят ваши рассуждения о каких-то высших лигах и правах на существование.
Еще раз, специально для вас: пара проектов (которые никто из RSDN-еров не видел) не могут служить доказательством того, что вы владеете C++. Аналогичные случаи здесь (прямо на RSDN) уже встречались, как минимум, с персонажем RussainFellow.
PS. Вы собеседовали соискателей на какие должности? C# разработчик?
Здравствуйте, so5team, Вы писали:
S>Что именно? Напомню, что мой комментарий касался того, можно ли считать "сделанные" проекты на C++ подтверждением знаний C++.
Почему вас это беспокоит то?
Постепенно с опытом достигаешь мастерства. Нет черты когда ты вдруг не знал а потом резко стал знать.
S>Еще раз, специально для вас: пара проектов (которые никто из RSDN-еров не видел) не могут служить доказательством того, что вы владеете C++. Аналогичные случаи здесь (прямо на RSDN) уже встречались, как минимум, с персонажем RussainFellow.
Мне нет необходимости вам что-либо доказывать.
К чему разговор? У вас ущемленная самооценка и вы хотите как-то ее поднять благодаря мне?
Здравствуйте, Shmj, Вы писали:
S>>Что именно? Напомню, что мой комментарий касался того, можно ли считать "сделанные" проекты на C++ подтверждением знаний C++.
S>Почему вас это беспокоит то?
Вы не ответили на вопрос. Посему повторю: к чему относилось "Это дело лично каждого"?
S>>Еще раз, специально для вас: пара проектов (которые никто из RSDN-еров не видел) не могут служить доказательством того, что вы владеете C++. Аналогичные случаи здесь (прямо на RSDN) уже встречались, как минимум, с персонажем RussainFellow.
S>Мне нет необходимости вам что-либо доказывать.
Как и возможности.
Но раз вы залупнулись про оценку чужой компетентности, а именно:
"Чем вы докажите свою компетентность, чтобы делать такие заявления?"
то логичным является адресация подобного вопроса в ваш адрес.
S>К чему разговор?
Считайте это платой за то, что вам на этом форуме помогают.
. Там есть потенциальная возможность стрельбы по ногам. В этих примерах не выстрелит, но если немного изменить данные — может. Твоя задача — найти и исправить эту потенциальную опасность.