Na realidade C e C++ estão anos-luz de distância entre si, com apenas algumas coisas sendo comuns. Quanto ao termo STL, significa Standard Template Library, que é basicamente o conjunto de funções e estrutura de dados que já vêm prontos para serem usados, como Vector, Map e Set, diferentemente de C, que tudo tem que ser implementado à mão.
Entendo o ponto. Talvez onde eu estudei tenha ensinado de forma supercial para evitar confusões. Lembro de ter visto algo como "C++ é uma extensão do C".
Ao mesmo tempo, agora que você falou, em outras fontes de fato é dito que C++ tem infinitas coisas a mais que o C, e apesar de ter relações, há muitas nuances.
Esquisito isso, parece que veio um flash de luz quando tu falou em minha mente 😄
Se fosse só coisas a mais, poderia ser realmente algo como uma extensão, porém existem coisas que estão presentes nas duas linguagens, só que tratadas de formas diferentes.
Por exemplo, em C uma função escrita como
void foo() {
// snip
}
é diferente de
void foo(void) {
// snip
}
enquanto que em C++, a primeira definição (sem void
) é tratada como a segunda (com void
).
C function with no parameters behavior
PS: Eu não vejo muita gente nova se interessando por low level, e é o que eu mais gosto, então se quiser me adicionar no discord pra trocar um papo depois, aqui está meu user: frangomolhado.
Isso mesmo, o problema é que quando usamos a STL, ou seja, os templates pre-prontos e os ponteiros inteligentes entramos numa área chamada modern cpp.
Para alguns programadores ainda existe a versão antiquada do "Cpp é uma extensão de C" e isso damos ao nome de Cpp Ortodoxo que não é recomendado.
Por isso uma das minhas dicas foi: Não se apegue ao estilo C de escrever código.