While still being C-like in its syntax and approach, C++ provides many genuinely useful features that aren’t available natively in C: namespaces, templates, exceptions, automatic memory management, and so on. Projects that demand top-tier performance—like databases and machine learning systems—are frequently written in C++, using those features to wring every drop of performance out of the system.
Further, C++ continues to expand far more aggressively than C. C++ 23 brings even more to the table including modules, coroutines, and a modularized standard library for faster compilation. By contrast, the latest version of the C standard, C23, adds little and focuses on retaining backward compatibility.
The thing is, all of the pluses in C++ can also work as minuses. Big ones. The more C++ features you use, the more complexity you introduce and the more difficult it becomes to tame the results. Developers who confine themselves to a subset of C++ can avoid many of its worst pitfalls. But some shops want to guard against that complexity altogether. The Linux kernel development team, for instance, eschews C++, and while the team is eyeing Rust as a language for future kernel additions, the majority of Linux will still be written in C.