You mean, aside from the fact that there is no such thing as "C/C++"?
Counterexample: existence of programs that are portable to C and C++
compilers simultaneously (as a useful and easily-maintained feature).
An example is a program I've been working on:
http://git.savannah.gnu.org/cgit/txr.git
When building this program, you can pass --ccname=g++ to the configure
script, to have it built with GNU C++. By default, it builds with the C
front end. From time to time, I check for regressions by doing
a C++ build.
Compiling the code as C++ provides better diagnosis, catching
errors that C compilers let slide.
In the GNU implementation, the C++ front end provides superior
diagnostics for catching undeclared functions than the
-Wmissing-prototypes and -Wstrict-prototypes options than the C front
end. C++ has type-safe linkage, too, whereas C allows an
external declaration to mismatch the definition, resulting
in undefined behavior. C compilers and linkers even allow multiple
external definitions (which may not all be type compatible).
But switching to C++ for reasons like these sacrifices portability. We
may want to take advantage of C++ in development, but be portable to C
in deployment.
Plus, the support for C++ itself increases portability;
the code now ports to C++ compilers.
I think anyone teaching C these days owes it to the students to point
out where the C++ dialect differs in any of the areas covered.
Like for instance ``Here, class, we can assign the return value of
malloc to the pointer on the left side directly. In the C dialect
embedded in C++, we would need a cast.'' Etc. Or ``in the C++ dialect,
enumerations are treated with greater type strictness; some of these
things are we are doing here with the enumeration members are not
allowed under C++ without requesting a conversion.'' Or ``In C++,
struct is a class, and the members have a class scope; so a typedef name
or enumeration defined within a class is not introduced into the
surrounding scope, like in C; for portability it's best not to introduce
numerations and typedefs within a struct.''
If any of the students go out into the real world to do programming,
they may have to deal with C++ compilers.
My company develops a very large software suite written in C++. The
build system runs gcc with ``-x c++''. This means that all .c files are
treated as C++, must like .cc files. No exceptions. All snippets of C
code that were ever integrated into the tree are compiled as C++.
What's so wrong about teaching diving and sky-diving at the same time?
Is that the different equipment? Or maybe the different hand signals?
Can you say "confusion"?
That's ridiculous. C and C++ are closer than French and Italian.
These are mutual dialects, which French and Italian aren't.
Sky diving isn't derived from ocean diving; they are connected only
by a word (at least in English).
C and C++ are not connected by merely a letter of the alphabet.
Hyperbolic arguments don't lead to any enlightenment.