sizeof — тип или значение?

      Комментарии к записи sizeof — тип или значение? отключены

Помечено: , ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 4 мес., 2 нед. назад.

  • Автор
    Сообщения
  • #3629

    Как использовать sizeof? Речь идет о случае, когда вы хотите передать данные какому-то внешнему API. Варианта, собственно, два. Вот первый:

    math::matrix mat;
    std::size_t mat_size = sizeof(math::matrix);
    socket->send(&mat, mat_size);

    А вот второй:

    math::matrix mat;
    std::size_t mat_size = sizeof(mat);
    socket->send(&mat, mat_size);

    Я рекомендую использовать второй вариант. Во-первых, если тип передаваемого объекта изменится, вам не придется менять код. Во-вторых, первый вариант дает пользователю информацию о типе объекта. Эта информация лишняя. Все, что пользователь должен знать об объекте, должно быть видно из имени этого объекта. И в третьих, второй вариант наглядно показывает, для какого объекта будут использованы полученные данные. Это обогащает семантику кода.

Для ответа в этой теме необходимо авторизоваться.