Interesting. I agree with your assessment of Objective-C for OS X/iOS and Java for Android, but C++ is a niche language and C# is what is used for Windows? I'm a Computer Engineering student and I don't know anyone who knows C# but I know plenty of people who only know C++.
My understanding is that you can't write native code for Windows (everything is run by a virtual machine, regardless of language) so I just use Java given all its performance problems go right out the window if everything else is going to be run in a virtual machine just the same anyways. I might be mistaken, though I hardly have any experience with Windows at all... what I stated is what I found from Wikipedia.
...
Well, the OP is new to programming, so admittedly, I was over-simplifying. I think the chances of him actually doing and learning something is increased greatly by using the best supported language for whatever platform he wants to target. It just means he'll get to concentrate more on the interesting bits of programming more than the tedious bits (no worries, there will still be plenty of those). It'll be easier to find tutorials, sample code, documentation, someone to answer questions, etc.
On the topic of over-simplying: Windows, in particular, allows for a massive number of different languages, platforms, frameworks, engines, etc., many of which are reasonable or at least arguable for a particular situation. It's hard to say there's one best language for Windows. And, it's true, C++ remains quite well supported as a development language and gives you a lot of flexibility and allows for very good performance if you know what you are doing. But the cost of that is complexity and that there are so many more ways to go wrong. Also, there are just not that many things you actually need C++ for. IMO, choosing C++ because you think you might need the performance is an extreme case of premature optimization. Build your app, profile, simplify the design to remove layers and transformations (code that doesn't execute is much, much more efficient than the best optimized code). Then, if it's still too slow, optimize that bit in C or C++ or whatever. If you really feel that performance is ultimately going to be your ultimate bottleneck, design for it by letting the anticipated bottlenecks to be parallelized/distributed.
Sorry, probably too much blathering there.
Quickly, to clear up a few misconceptions, just for your information:
You can write native code for Windows in various ways.
Over the last decade (roughly, not looking at a calendar here) it seems like MS has put the bulk of their efforts to support general development into various .NET frameworks, which do run in the CLI (sort of like a Java VM environment), which isn't quite "native". The features and capabilities of these frameworks is massive, so a lot of apps choose to use them and usually are written in a "managed" language themselves. So its true a lot of apps aren't "native" but that's by choice (usually for good, practical reasons).
Interestingly, MS's latest application framework, for windows store apps, has a native implementation. They reimplemented a bunch of .net interfaces in code that compiles to native machine code (I'm guessing they used C++, but I have no direct knowledge -- C is possible as well.) It's pretty clear they did this to provide a competitive platform for mobile (ARM) platforms. The windows store apps you write on top of the platform APIs can be managed (C# or, I think, VB.NET), C++, or (most interestingly) Javascript.
Anyway: the windows world is all over the place. But when in doubt, C# has to be the default. They add native language support to C# whenever they come up with a clever new idea (it's await/async these days, I think, unless I've gotten a cycle behind.)
Well, I've been in the business (including cross-platform development for ~7 years) more years than I care to admit. C++ *is* the Mike Tyson of cross-platform development languages (this analogy would work better if Tyson was unbeatable in the '90's rather than the '80's). But so what?
Judicious use of C++ is
an answer to the question, how can I develop software for multiple platforms without rewriting/porting for each platform (especially high-performance software). It's not a good answer for getting started in programming for most situations. (Also, you should read the articles you're linking to carefully. They don't suggest that C++ "covers" those platforms. One is by a newb IOS developer who may not fully understand how to optimize objective-c code -- e.g., there's nothing forcing you to send messages in your inner loops. The third one is an indirect sales pitch by a guy with a cross-platform C++ solution to sell. There's a reason it's title ends with a question mark. And the middle one -- the only experienced developer without an axe to grind -- it suggesting C++ as a cross-platform language use to implement parts of an app, mixed with native code and doesn't exactly suggest it's a panacea.) Don't get me wrong. I love C++. It's probably my "native" language. But I review C++ code routinely, written by smart, experienced programmers that nevertheless contains serious flaws. If the OP wants to start with K2, then fine. If he can climb it with little experience and preparations, then great! But that's not where I'm going to recommend someone start.
Wow, what a long and rambling post. Sorry, just unwinding after a long day. Oh well, what else is the internet for, anyway?