Pull to refresh
554
0
Филипп Володин@Fil

Пользователь

Send message

WinHEX, значит, устанавливает свой драйвер?

Хороший комментарий. Вот, что интересно: если вы разбирались с этим — заданы ли четкие требования к работе copy elision? Например, в таком случае:


T foo()
{
    T t;
    if (rand() % 2)
    {
        T t;
        return t;
    }
    else
    {
        return t;
    }
}

На всякий случай, чтобы не быть голословным. В main:


main:
        lea     rax, [rbp-17]  //выделили место на стеке
        mov     rdi, rax       //передаем адрес через rdi
        call    foo()

        lea     rax, [rbp-17]
        mov     rdi, rax
        call    T::~T()        //вызов деструктора для того же адреса

теперь смотрим foo:


foo:
        mov     QWORD PTR [rbp-8], rdi  //копирование туда-сюда
        mov     rax, QWORD PTR [rbp-8]
        mov     rdi, rax
        call    T::T()                  //вызов конструктора для адреса
                                        //в rdi в стеке main

Иногда действительно хочется отложенную инициализацию.

На секунду появилась мысль написать так:


void bar(T& t)
{
    t.T::T();
}

Но это не вариант, непонятно на что ссылаться. Мне неизвестно как создать объект с выделением памяти и вызовом деструктора, но без вызова конструктора.

Спасибо, важное замечание! Добавлю в статью.
Ручками не обязательно. У вас неверная запись. Нужно использовать один из вариантов (строчный или блочный):
$inline$\hat {K}$inline$
$$display$$\hat {K}$$display$$

У меня закончились оправдания, почему я не пишу на Хабр :) Спасибо!
Когда я перешел на новую работу, мне пришлось переучиваться и помещать скобку на новой отдельной строке. И теперь считаю, что так лучше.
1. Открывающая и закрывающая скобки расположены на одном уровне. Это довольно естественно. В GUI, перейдя курсором на закрывающую скобку, легче найти подсвеченную открывающую и глазами визуально выделить блок.
2. Кода влезает меньше, но он не такой плотный, опять же легче ориентироваться в нем. И меньшее количество умещенного кода на экране стимулирует разбивать большие функции.
На 50-й секунде Мимас занимает около 1/50 части экрана по горизонтали. Если принять угол обзора по горизонтали = 90°, то угловые размеры спутника = (PI/2)/50 = 0.0314 рад. Для такого маленького угла это почти тангенс, т. е. Диаметр_мимаса/расстояние = 400км / расстояние = 0.0314, значит расстояние = 12700 км. До него мы долетели примерно за 9 сек, значит скорость = 1400 км/с. Конечно, это грубая прикидка.
22. Можно подождать, когда часы покажут точно ЧЧ: ММ: СС с дискретизацией один раз в секунду.
Мне кажется, причина в том, что выдержать точный шаг дискретизации невозможно. Т.е, если нам нужно засечь время 00:00:01, то велика вероятность перепрыгнуть: 00:00:00.999, а следующий отсчет 00:00:02.000
Связано это было со сплющеностью геоида и, соответственно, уменьшением силы тяжести на экваторе.
Небольшая поправка. Разница в ускорении силы тяжести между полюсами и экватором составляет около 5 см/сек^2. Около 2/3 этой разности возникает за счет центробежного ускорения на земном экваторе и около 1/3 — за счет сплюснутости Земли.
Для красоты: 5040 = 7!
Это для одного символа. Для всей строки не так просто:
std::transform(s.begin(), s.end(), s.begin(), std::tolower);
В оригинале не просто радость, а «spark joy». Сантехнический трос не вызывает «вспышек радости», когда я беру его. Но его точно не выброшу :)
Да, спасибо за напоминание про markdown, попробую!
Эта фича продиктована выбранным нами в данный момент курсом на улучшение окружения для авторов, которые вкладывают своё время и силы в написание статей для ресурса.

Каждый раз ожидаю, что хотя бы чуть-чуть улучшился редактор. Но нет, по-прежнему узкое окошко, высотой в треть экрана, и я увеличиваю его в в инспекторе. Возможно, хороший редактор прикрутить очень сложно, но каждый раз при желании написать статью, я вспоминаю, как приходилось писать в другом редакторе, а потом выправлять здесь. Может быть, все замечательно для новостных заметок, но для полноценных статей с оглавлением, картинками и формулами, очень много времени убивается на расстановку и перепроверку всех тегов. Например, в предпросмотре, я вижу, что тег воткнут неправильно/некрасиво/не тот, приходится искать его, править, и искать место в предпросмотре где я остановился. Либо можно сначала читать весь предпросмотр и выписывать на листочек там где нужно править. Хотя, конечно, статьи в 50 страниц можно разбивать на части, но у этого способа свои недостатки.
> которые ведут нормальную жизнь
А у пользователей соцсетей ненормальная жизнь? Где критерий нормальности? Вы сейчас точно так же попытались выразить свою уникальность: «Видите, я нормальный, меня нет в соцсетях (а еще я веган)».
переделать так
inline bool is_parity(int flags)
{
  return flags & PARITY_MASK;
}

аналогично для остальных.

У следующих уважаемых ребят целые главы посвящены комментированию.
Фаулер «Рефакторинг»:
Почувствовав потребность написать комментарий, попробуйте сначала изменить структуру кода так, чтобы любые комментарии стали излишними

Макконнелл «Совершенный код»:
Если код настолько сложен, что требует объяснения, почти всегда разумнее улучшить код, а не добавлять комментарии
Ну, да, тогда printf захватит недостающий аргумент из стека, что явно было предназначено не для него. Но если есть возможность изменить литерал в статической памяти, то ничего не мешает натворить кучу других нехороших дел. Подправить таблицу виртуальных методов, например.

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity