好问题。从表面上看,推荐 C++ 是显而易见的,因为“它像 Java 一样面向对象”。唯一的问题是,这不是真的。C++ 允许 OOP,是的,但它只是 C++ 支持的几种范式之一。将 C++ 视为 OOP 语言(尤其是将其视为 Java)只会导致挫败感。
问题是 Java 和 C++ 实际上并没有太多共同点。Java 程序员通常认为 Java 是受 C++ 启发的,但只有当 C++ 指的是 C++ 的最早版本时才成立,这可能更恰当地称为“C with classes”。从那时起,C++ 完全转变为自己的语言,拥有自己的做事方式。从那时起,它的变化可能远远超过 Java。那时的 Java 程序员仍然能够理解今天的 Java 代码。对于 C++ 而言并非如此。所以我认为 C 实际上比“现代 C++”更接近 Java。如果您使用 Java 并剥离 GC 和类的概念以及其他一些抽象,那么您将得到 C。要到达 C++,
此外,C++ 是一种非常复杂的语言,学习它需要很长时间。如果你学得不好,你会一次又一次地在自己的脚上开枪。
最后,这取决于您的目标。C++ 是一种比 C 更现代的语言,一旦你学会了它,它就非常具有表现力和强大的功能,而且令人惊讶的是,它甚至可以非常优雅和简洁。但是学习曲线很糟糕。因此,从长远来看,对于本机编程,我会推荐 C++ 而不是 C。
但是,如果您的目标主要是与 Win32 API(或其他本机 API)进行交互,则不需要 C++。Win32 和大多数其他 API 是用 C 而不是 C++ 编写的,无论如何您很可能不需要非常复杂的代码来在它和 Java 之间进行接口。
关于学习Win32,你是对的,你需要的所有细节都在MSDN上。如果你想要大局观,Petzold就是关于这个主题的书。