Если ты хорошо знаешь С использовать С++ нет вообще никакого смысла.
На самом деле ровно наоборот: если хорошо знаешь С++, то использовать С нет смысла.
http://yosefk.com/c++fqa/picture.html#fqa-6.5
One thing is always true: where you can use C++, you can use C. In particular, if someone gave you C++ interfaces, a thin layer of wrappers will hide them. Using C instead of C++ has several practical benefits: faster development cycle, reduced complexity, better support by tools such as debuggers, higher portability and interoperability. When C++ is an option, C is probably a better option.
QUOTE
One thing is always true: where you can use C++, you can use C. In particular, if someone gave you C++ interfaces, a thin layer of wrappers will hide them. Using C instead of C++ has several practical benefits: faster development cycle, reduced complexity, better support by tools such as debuggers, higher portability and interoperability. When C++ is an option, C is probably a better option.
Написана редкостная чушь. От первого слова до финальной точки. Всё вывернуто ровно наизнанку. Видать аффтар ещё тот "знаток" плюсов.
По сути С++ дублирует функционал С и во многих случаях уступает ему при этом.
Правда? Давайте проверим. Покажите дубль на С для следующих вещей:
Пример номер раз. Перегрузка имён функций.
CODE
void send(char x) { TxBuf.push(x); TxBuf.send(sizeof(x)); }
void send(uint16_t x)
{
TxBuf.push(x);
TxBuf.push(x>>8ul);
TxBuf.send(sizeof(x));
}
...
char S;
uint16_t Slon;
...
send(Slon);
...
send(S);
void send(uint16_t x)
{
TxBuf.push(x);
TxBuf.push(x>>8ul);
TxBuf.send(sizeof(x));
}
...
char S;
uint16_t Slon;
...
send(Slon);
...
send(S);
Понятно, что можно написать версии функций для любых типов, включая классы и единообразно это использовать, не паря мозг, что там за конкретный объект передаётся.
Предъявите аналог на С?
Пример номер два. Например, работа с комплексными числами, код приводить не буду, примеров этого предостаточно. В С99, вроде, включили поддержку комплексных чисел на уровне компилятора. Но это не решение - многомерный объект может быть и не комплексным числом - например, вектор. Все операции там красиво выражаются на функциях-операторах.
Аналог на С, плиз?
Ну, и до кучи, чтобы не приводить банальности про параметризованные типы, - стандартная библиотека шаблонов. Если надо защищённый массив с быстрой индексацией, использую std::vector<>, если нужен список, то std::list<>, если очередь FIFO, то std::queue<>, если ассоциативный массив, то std::map<> и т.д. Причём операции все унифицированы - например, если хочу добавить объект в контейнер, то делаю container_name.push_back(object_name), и т.п. Общие операции с контейнерами унифицированы, поэтому не нужно досконально изучать интерфейс каждого контейнера. Мегамогучая штука.
Как там это на С делается?
В общем, вопросы-то, понятно, риторические. Ваша позиция тоже ясна в деталях, поэтому на этом с вами я дискуссию тоже прекращу, спасибо за участие.