You're a good example of what I said before that people make it look so hard when it really isn'I didn't said C++ was "hard", just that the number of concepts that you have to learn before knowing what is going on is high.
Namely, in order to write a C++ program and have a good in-depth understanding of what is going on (not trying random stuff until it appears to work), in addition to the normal unavoidable basic stuff that comes with every language (loops, conditional, variables, functions), you also need to learn :
- What a pre-processor is and how it expands macros (and how to peek at your code after the macro's expansions if you have trouble)
- What separate compilation is, how to separate stuff in header and source files, what is a linker
- The basic integers and double types
- Storage allocation (stack, heap and bss)
- Concept of a segfault / bad memory access in order to be able to localize bugs and fix them
- Functions overloading
- Implicit types conversion
- How to use pointers correctly, what is a NULL pointer, how the '*' sign is overloaded for 3 unrelated things
- Strings constants, how they decay into pointers
- Arrays, how they are initialized, how they decay into pointers
- Memory management with heap, malloc and free, and new and delete
- How to use references, the difference with pointers, how the '&' sign is overloaded for 3 unrelated things
- Name mangling, why the linker error messages are so obscure and how to fix this
- How to deal with const correctness (and to a lesser extent, the rarely used volatile correctness
- What struct, unions and enumerations are, and how you can create your own types using them
- What classes are and how they are an extension of struct
- Concept of member functions (a.k.a methods), how they extend a struct
- Concept of "private" members / methods, how to use them, how they relate to const correctnes and private variables
- Concept of "friends" functions
- Constructors, desctructors, copy constructors, assignement constructors
- How to correctly manage memory within class, using the rule of three
- Creation of temporary objects
- Operator overloading, how it makes C++ (in my subjective point of view) powerful (in order to understand what std::count is for example)
- The 'static' keyword and how it is overloaded for 4 completely different things
- Concept of inline functions and member functions, how to make them correctly in a .cpp or .hpp file
- Templates and genericity
- A deep knownledge of the standard library, (std::string, std::vector, etc, etc...)
- A grap of containers and iterators
- Inheritance, virtual functions and such object-oriented concepts
Then you can being to have an understanding of C++.... If you don't have a good understanding of at least what I wrote above, then your knownledge of C++ is superficial and you run into the risk of writing bad programs that leak memory and/or are packed with bugs. None of what I listed is particularly hard to learn, in fact most of it is very easy in my opinion, but still the number of concepts to learn is incredibly large as opposed to other programming language.
As for whether it's a good language or not it's completely opinion based. I think it's probably not that good per se, but being compiled it is fast enough, and is so wide that if you want to do something you can almost certainly do it in an elegant and sensible way using C++.
Finally I agree with what everyone else said, if you want to learn 6502 just do so, C-family languages are highly unrelted and will just get in the way.
[C] language is close enough to ASM to make sure your mind is tuned for the job ahead.In my opinion this is yet-another fallacy over C that everyone repeats again and again but it does not make it become true.