Кресты / Говнокод #9360 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
class fileOutStream : public ostream
{
public:
    /* ... */
    virtual inline int printf( const char * fpFormat, ... )
    {
        /* ... */
    }
    /* ... */
}

virtual inline метод.

Запостил: Dummy00001 Dummy00001, (Updated )

Комментарии (10) RSS

  • ну в inline тут ничего страшного, компилятору будет всё равно - тело функции и так описывается в классе
    а вот printf действительно нужен? насколько он безопасно реализован?
    Ответить
    • >насколько он безопасно реализован?
      По элипсису видно насколько он безопасно реализован. Но думается мне, что всё ещё хуже.
      Ответить
      • > безопасно
        ну то, что в аргументы обязательно придется передавать POD, даже не обсуждалось
        просто раз это какбе "fileOut", то, надеюсь, внутри использован vfprintf в файл, а не vsprintf в промежуточный буфер, размера которого никогда не хватит
        Ответить
  • >printf
    А велосипедист реализовал точно такой же велосипед и добавил новую наклейку.


    >/* ... */
    Велосипедист хоть догадался заюзать стандартный printf или всё по честному с нуля?
    Ответить
    • >или всё по честному с нуля?
      Только потоки, только хардкор! Это ж плюсы.
      Ответить
    • перенаправляется в FILE* либо коллбэк. как правило коллбэк, который перенаправляет вывод в другую либу, которая тоже типа Сшный stdio эмулирует. вообщем, стандартное корпоративно-коллективное-никто-ни-за-что-не-отвечает кодирование, минимум в три-четыре лэера.
      Ответить
    • Так а почему вы называете автора "велосипедистом", еще не зная, переиспользовал он стандартные функции или нет? Где тут велосипед?
      Ответить
      • велосипед - это если не использовать готовые библиотеки, в том числе и стандартные
        тут не используется стандартная функция, а пишется кривая обертка над функцией
        видимо это имел ввиду гг
        Ответить
        • Что тут используется, а что не используется - из приведенного кода не видно совершенно. Это во-первых. А во-вторых, кто вам сказал, что в данном случае вообще немедлено применима какая-либо существующая стандартная функция или какие-либо "готовые библиотеки"?

          Каким образом вообще можно делать такие далеко идущие выводы из одной декларации?
          Ответить
  • И? Что странного вы увидели в 'virtual inline'? Я нередко слышу эту байку от новичков, мол, комбинация 'virtual' и 'inline' не имеет смысла. Что интересно, им периодически втолковывают, что ничего странного или необычного в этой комбинации нет и что смысл она имеет, но тем не менее байка продолжает жить. Заставляет сделать вывод, что у этой байки где-то есть "гнездо", из которого она постоянно и расползается. Вот бы найти это гнездо, да дустом туда побрызгать... Говнокнига что-ли какая-то?

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

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8