Et non, le code orienté objet sera traîté différemment par le compilateur que le code impératif. fputs est une fonction. cout est un objet, << est un appel à son opérateur de streaming. Le compilateur n'est pas censé "optimiser" cela.
Mais pourquoi ne pourrait-il pas le faire. En fait, je ne sais pas du tout ce que fait un compilo C++, mais il pourrait très bien ne garder que ce qui est utilisé de l'objet. Le C++ ne devrait être qu'un style d'écriture, une autre manière d'écrire ce qu'on peut écrire en C.
Quand j'écris cout << "Hello !", je n'ai jamais demandé au compilo d'en faire plus que puts ("Hello !") (si tu veux, mais pour l'exemple, le parallèle était meilleur avec fputs).
Ou ne serait-ce pas plutôt l'exemple qui est mal choisi ? C'est peut-être à cause de cout que ça prend beaucoup de place.
Ce qui m'intéresse plus en C++, ce sont par exemple les classes, qui ne sont rien d'autres que des structures avec la possibilité d'inclure des fonctions (au lieu de faire des fonctions globales auxquelles on passe une structure).
Je ne vois rien la-dedans qui prennent plus de place (et de temps).