MyString::Copy
передан ноль. Где именно произойдет падение и почему?m_string[m_length] = '\0';
или m_string
можно как-то иначе инициализировать чтобы не писать эту строчку?MyString::Copy
ты практикуешь ранний выход, но не нарушает ли это инвариант типа?MyString::Copy
из *this
не создавалась временная строка, деструктор которой ты и наблюдаешь? new
, нужно читать именно стандарт, а не документацию майков.new
не убивает процесс. Рядовая форма, используемая в этом коде, именно что бросит исключение, ловить которое будет некому. Ситуацию в сторону возвращается ноль исправляет аргумент std::nothrow
для самого new
. if (m_string == nullptr)
return *this;
Можно попробовать сделать функцию которая возвращает пару.
swap
означает именно фактический размен состояний между аргументами.swap
, использующая третий объект. clear(quad_mesh);
и glDeleteProgram(quad_shader);
из области видимости первого окна?while(!glfwWindowShouldClose(win_0.id))
явно говорят о том, что к моменту начала области видимости второго окна ни от меша, ни от шейдера следа у же не останется.Как учить C++, я полагаю, можно найти в интернете. Но отсался вопрос по книгам.
config.search_int("foo").and_then(lambda);
. Код выходит довольно наглядный. int masivA(int* a) {
int sA = 0;
for (int i = 0; i < 20; i++)
if(a[i]<0) sA += a[i];
return sA;
}
int masivB(int* b) {
int sB = 0;
for (int i = 0; i < 20; i++)
if (b[i] < 0) sB += b[i];
return sB;
}
int masivC(int* c) {
int s = 0;
for (int i = 0; i < 20; i++)
if (c[i] < 0) s += c[i];
return s;
}
Это не метод.
А ты можешь словами описать то, что делает этот код?
return 0;
Как ты думаешь, почему эта строчка не вызывает ошибки трансляции?
Как ты думаешь, выполнится ли вторая строчка в этом коде?