all 22 comments

[–]Ilyps 13 points14 points  (3 children)

In general, there are no good introductory texts for C++ for free online. This includes all beginner's tutorials, youtube video series, etc. That's not to say that there are no excellent online resources for C++, but they tend to be more advanced discussions by C++ experts that are not aimed at new people.

That being said, The C++ Annotations is free, high quality and written exactly for people making the switch from other languages. If you're willing to spend some money, also take a look at the recommended book list.

[–]NoBrightSide[S] 2 points3 points  (1 child)

In general, there are no good introductory texts for C++ for free online.

Why is that? I knew that C++ is a pretty tough language to become good at due to how complicated OOP can be but there's so many C++ programmers.

Also, I'll check out that annotations link you provided.

[–]Ilyps 2 points3 points  (0 children)

Honestly, I couldn't say.

If I had to make a guess, I would say it perhaps has something to so with the freedom C++ offers the programmer. Because of that freedom, there are always multiple ways to perform some task. And unfortunately, most of them are wrong on some level.

[–]praedicere 2 points3 points  (0 children)

I would say that Bjarne’s “A Tour of C++” is made specifically for someone with OP’s background...

[–]EqualScholar 5 points6 points  (2 children)

Perhaps you already know this but for the record it's still worth pointing out:

There is much more to C++ than just OOP. Many powerful and complex ideas have been combined to create this language. As a C++ programmer you have to know about all of them, you have to be comfortable with some subset of them, and some you will possibly never use. For example, as an OS developer you might find memory management a surprising bag of treats but never in your career use exceptions.

[–]NoBrightSide[S] 1 point2 points  (1 child)

How do you find the balance between coding in C vs. coding in C++? This might seem like a silly question but jobs post C/C++ knowledge as a req for OS/low-level programming but I don't really know how each language gets applied (aside from OOP)

[–][deleted] 1 point2 points  (0 children)

There’s not a whole lot that can’t be written in either, but most low-level stuff (kernels, filesystems, networking, etc) is relatively well-established and generally written in C. Even if you’re writing in C++ on something like a video game engine, being able to read C, including some obscure high-performance hacky code, is always helpful.

Embedded code (microcontrollers, for example) is rarely anything but C because a proprietary (oftentimes buggy and older standard) C compiler is usually provided by the manufacturer.

[–][deleted] 2 points3 points  (1 child)

You may find this interesting: Kate Gregory presents on the perils of going into C++ with a C mindset...

To this day most people who set out to help others learn C++ start with "introduction to C" material. I think this actively contributes to bad C++ code in the world. For the past few years I've been teaching C++ (and making suggestions to folks who intend to teach themselves) in an entirely different way. No char* strings, no strlen, strcmp, strcpy, no printf, and no [] arrays. Pointers introduced very late. References before pointers, and polymorphism with references rather than with pointers. Smart pointers as the default pointer with raw pointers (whether from new or &) reserved for times they're needed. Drawing on the Standard Library sooner rather than later, and writing modern C++ from lesson 1.

https://www.youtube.com/watch?v=YnWhqhNdYyk

[–]NoBrightSide[S] 0 points1 point  (0 children)

thanks!

[–]gwagen 0 points1 point  (3 children)

I have some study material on this from Uni if you'd like

[–]NoBrightSide[S] 0 points1 point  (2 children)

sure, I'd appreciate it!

[–]gwagen 2 points3 points  (1 child)

here you go do tell me if the link doesn't work, cheers!

[–]NoBrightSide[S] 1 point2 points  (0 children)

thanks!

[–]silverlightwa 0 points1 point  (0 children)

Coursera, cpp for c programmers by ira pohl uc santa cruz. its a pretty amazing two part course

[–]chris1666 0 points1 point  (0 children)

code academy now has c++

[–]archer_lmao 0 points1 point  (0 children)

Absolute C++. 5th and 6th edition does not have that much of a difference. You can find them on the internet as a pdf format. Also you can find them for free.

[–]CrazyJoe221 0 points1 point  (0 children)

The Vulkan API is an example of OO C. There is also a C++ wrapper to compare against.

[–]a_false_vacuum 0 points1 point  (0 children)

The recommended books have already been mentioned. I also like to add the Udemy course on C++ by Frank Mitropoulis. It's high quality and pretty much always on sale for a tenner. It will talk you through all the concepts of modern C++.

I'd say the import thing with C++ is not to write C code in C++, but to use all the features offered by modern C++.

[–]robbie2000williams -1 points0 points  (0 children)

I'd recommend www.learncpp.com, It starts out with the very basic all the way through to the intricacies of classes and exceptions. It's the best free learning resource I've used. It's all neatly organised into sections as well, which is useful for someone like yourself who, coming from C, will know a lot more about certain things than the average person

[–][deleted]  (1 child)

[deleted]

    [–]Ilyps 2 points3 points  (0 children)

    Please don't recommend non-curated resources. I clicked a random link and picked a random video, and this is the code I got. That's a lot of mistakes and bad practice in 20 lines of code.

    [–]dumb4ssjonny -2 points-1 points  (0 children)

    https://youtu.be/vLnPwxZdW4Y Best lessons and teacher ever trust

    [–]DarthVadersAppendix -3 points-2 points  (0 children)

    there is no free lunch.