My programming classes in school were C++, but I ended up working a job doing C# for the last few years. If there was a position that required say 1 or 2 years experience in C++, would my experience in C# be worthy of consideration? How effective could I be in such a position? So do I need to start out as an entry-level C++ programmer to gain the necessary experience?
The problem here is that C++ and C# are, fundamentally, extremely different languages with different approaches to many problems. It's easy to lump them in as "An OO language", but the simple fact is that many C# idioms are considered to be very bad code in C++ (and vice versa).
If you actually know the differences and what C++ idioms look like, then I see no reason that it shouldn't be fine.
I was in the same boat about 2 years ago. Your c# experience would probably not be worth as much for a c++ job as c++ is for a c# job. That said, if you know how c# actually works (very few c# programmers actually do), and learned your c++ well then the c++ will not be the problem. What will be the problem is the way you have grown accustomed to certain design patterns which will be too high level for c++.
For instance, going from the nice ADO.NET data access model to using cppcon for mysql access, System.Collections.Generic to using stl, multiple-inheritence, garbage collection to cleaning up your memory in destructors and so on... all tend to be tough transitions. C++ isn't the problem, learning the libs, design patterns, and how to use them is the challenge. Most recruiters don't realize this. If you can do basic design and can use the actual commonly used features of c++ then you should be fine in the interview.
However, ready for the job is a different story. It is a fun challenge though, I hope all goes well.
I cant speak for every employer but I personally view programming as the skill and language specifics as a nice to have. Its still quite possible to get hired in another programming job that isn't your main skill.
Having said that its very very unlikely I would hire someone that had absolutely no experience in the language I'm hiring them for. Spend a few weekends learning and have a couple of pet projects to bolster your CV. Even small ones prove you are capable of learning and keen.
You are exactly in the same situation I was in 4 years ago.
I did some C++ during my studies, but I hated it. I did a lot of web dev when I could on my spare time and got a job in that field.
When I moved I applied for a C++ job which had 2 years of C++ experience as a requirement. Well I refreshed my C++ memories before the interview and when the time came for the tests I managed to get away with a few things I wasn't so sure I was doing right.
But most of the interview was about problem solving and creative solutions and C++ ended being just a minor factor.
So the chances really depend on the employer and the positions they have.
If you are going through a recruiting agency you will "probably" be told your profile doesn't match. But with a real employer your chances are way better as they really know what they need.
Yes. It may not be as relevant as C++ experience, but it is good.
Good employers are going to be interested in how you think, more than how many years of a specific language you have.
An entry-level C++ position is fine: you can learn quickly, and do a great job. A good company will give you plenty of opportunity to grow. If not you can go somewhere else, and have both C# and C++ experience.
It really does depend on the nature of the business you're applying to. If they're looking for someone who has good OO-based programming and architecture skills, C# is likely as good as the next thing.
If they take pride in their software's speed/responsiveness, then you're going to need to know your algorithms as this matters more than micro-optimisations - Hash Tables versus Linear lookup, etc. C# is still relevant here, but you'd need to demonstrate understanding of the performance characteristics - not everyone knows about ngen.exe, for example.
If they're into embedded/mobile and/or non-garbage collected environment, you really need to know about how to effectively manage memory. Smart Pointers, as @DeadMG pointed out, are key here, but so is understanding the memory allocation profile. Games programmers often pre-allocate large arrays of objects and recycle them in order to know the memory requirements up-front and reduce unknowns on a per-frame basis. This is also the technique used in the scrolling TableViews in iOS.
If there's any integration work, you're likely to need C-level expertise in terms of marshalling data between languages (like P/Invoke) but also byte-level understanding of how these data structures may get used, which is not common practice in C# in my experience.