Является ли использование C в C ++ плохим?
, хотя это субъективный вопрос: по моему мнению, предпримите большие меры, чтобы избежать использования c в программах на c ++.
Многие люди говорили мне, что использование C в C ++ - это плохо, потому что это не так безопасно и требует большего управления памятью.Я продолжаю говорить им, что, пока вы знаете, что делаете, и вы удаляете свои новые и освобождаете свои malloc, тогда проблема C. не является проблемой.
вы вновь вводите недостатки и опасности, для которых был разработан c ++чтобы преодолеть, и это не так, как это делается в программах на c ++.
я обычно проверяю / отклоняю / переписываю код, который входит в кодовые базы, которые "c с функциями c ++" или "c ++ с функциями c".я даже зашел так далеко, что изменил malloc, free и т. д. для утверждения в корневых пространствах имен (между прочим).
В настоящее время я на форуме, где аргумент перед std :: string vs. char * происходит.Некоторые люди говорят, что выделение простого блока памяти char * более эффективно, и пока вы его освобождаете, это нормально.С другой стороны, у нас есть люди, которые говорят, что std :: string лучше, потому что в нем не задействовано управление памятью, но он менее эффективен.
, есть больше опций для представления строки в c ++, чем в std ::string.
, на мой взгляд, совершенно правильно создать новый класс, который представляет строку и служит определенной цели или следует дополнительным контрактам (когда это необходимо).часть контрактов таких строковых представлений заключается (конечно) в том, что они управляют своими собственными ресурсами, используя new[]/delete[]
, когда используется динамическая память.
, если эффективность так важна, а std::string
меньше, чем идеально дляВ этом случае c ++ достаточно мощный, чтобы выразить свое намерение в этих конкретных случаях, создав специализированный интерфейс на c ++.Есть много случаев, когда это приемлемо (IMO), но не всегда стоит затрат времени.в любом случае, им легче управлять, чем интегрировать идиомы / стили / опасности в программы на c ++.
Итак, главный вопрос здесь: плохо ли смешивать C / C ++?Если вы используете ТОЛЬКО на 100% C ++ при кодировании C ++?
, то лучше создавать многократно используемые объектные решения для ваших нужд.опасности в представленном примере могут быть полностью инкапсулированы (если эта оптимизация действительно стоит затрат времени) и могут быть написаны для использования идиом c ++ без потери производительности и с лучшей ремонтопригодностью.