C#和C++是语言.定义语言"可以"和"不能"做什么有点难以捉摸.C++可以做的事情和C#不能做的事情的一个例子是随意释放堆分配对象的内存,而不释放其他未使用的对象.但这是大多数时候无关紧要的事情.(您可以像使用C一样使用Marshal.AllocHGlobal和Marshal.FreeHGlobal分配和释放内存)
C++可用于编写Windows驱动程序之类的主要原因是因为这是Windows支持和促进的.如果有一天微软决定只支持C#并且放弃C++,那么我们就会说C#可以做一些C++无法做到的事情(即使这些语言在当时神奇地保留了它们).很可能它不会,也是正确的,因为C++比C#更适合系统编程.但希望你明白这一点.
从本质上讲,它不是语言本身的问题,而是它们的实现,工具和它们周围的世界.例如,您可以使用C#轻松编写操作系统.为什么?因为它有适当的工具.您还可以编写具有非实时要求的嵌入式系统.它与语言无关,这也是因为它有一个工具.
话虽如此,确实学习C++.无论它与其他语言的比较如何,它都非常有用.