0.1 — Introduction to these tutorials


    Welcome to the Learn C++ tutorials! Above all else, these tutorials aim to make learning C++ easy.

    Unlike many other sites and books, these tutorials don’t assume you have any prior programming experience. We’ll teach you everything you need to know as you progress, with lots of examples along the way.

    Whether you’re interested in learning C++ as a hobby or for professional development, you’re in the right place!

    Lesson structure

    The lessons in this introductory chapter are aimed at giving you some context around what C++ is, how it came about, how programs work, and what software you need to install to create your own programs. You’ll even write your own first program.

    Further chapters will explore different parts of the C++ language. In the first chapter (chapter 1), you’ll get a broad but shallow overview of many fundamental C++ concepts, so we can start writing some simple programs. Further chapters will explore those concepts in depth, or introduce new concepts.

    Each chapter has a theme, with all of the sections underneath it being generally related to that theme. There is no suggested amount of time that you should spend with each lesson or chapter; progress through the material at a pace that is comfortable for you.


    Before we get started, lets hit on a couple of important goals of these tutorials:

    • Cover programming topics as well as C++. Traditional textbooks do a pretty good job of teaching the basics of a given programming language, but they often do not cover relevant programming topics that are incidental to the language. For example, books will omit sections on programming style, common pitfalls, debugging, good/bad programming practices, and testing. Consequently, by the time you finish the book, you may understand how to program in a language, but you might also have picked up bad habits that will come back to bite you later! One of the goals of these tutorials is to make sure that all of these incidental topics are covered along the way, in the sections where it naturally makes sense to discuss them. When you finish, you will not only know how to program in C++, you will know how NOT to program in C++, which is arguably as important.
    • Provide a lot of examples. Most people learn as much or more from following the examples as they do from reading the text. These tutorials will endeavor to provide plenty of clear, concise examples to show how to apply the concepts you are learning. We will also avoid (as much as possible) the twin evils: the magic hand wave (also known as ), where in the interest of space part of an example is omitted, and the unexplained new concept, where a new concept that is integral to the example is introduced without any mention of what it is or how it works. Both of these tend to lead to getting stuck.
    • Provide practice programs. The end of many lessons and sections will contain some exercises that you can attempt to answer on your own, along with solutions. You can compare your solution against ours to see what we did differently, or, if you get stuck, how we solved the problem. Then you can go back and refocus on the areas you need more work on.
    • Most importantly: have fun. Programming can be a lot of fun, and if you’re not generally having fun, you’re not in the right mindset to be programming. Tired or unhappy programmers make mistakes, and debugging code tends to take much longer than writing it correctly in the first place! Often you can save yourself some time by going to bed, getting a good night’s sleep, and coming back to a problem in the morning.

    Getting the most out of these tutorials

    As you go through these tutorials, we recommend a number of practices to maximize your learning experience:

    • Type in the examples by hand and compile them yourself. Do not copy and paste them! This will help you learn where you commonly make errors, as well as becoming familiar with compiler warnings and errors. Don’t just transcribe the programs mindlessly -- think about what each of the lines you are typing in does, and how it contributes to the way the program functions. If you encounter anything that doesn’t make sense, or that you don’t understand, that’s something to investigate further.
    • As you make mistakes or find bugs in your programs, fix them. Try to solve your own problems before asking others for help. Learning how to find and fix errors is a key skill to successful programming. Don’t neglect learning how to use a debugger (we’ll explain how in a future lesson) -- it’s a key tool in figuring out where your programs are going wrong.
    • Experiment with the examples. Change numbers and text to see what happens. Modify the programs to do additional things (e.g. if a program adds two numbers, make it add three numbers). Try to find different ways to break the programs (if a program asks for user input, try a variety of different inputs). You’ll learn more by modifying the examples than by simply following them.
    • Plan to spend some time with the quizzes. If you’re new to programming, you may find these challenging (and that’s normal, as your brain acclimates to the programming mindset). Don’t be discouraged if you don’t get the right answer the first time. You may need to try several different approaches before you find a path to success. It’s okay to look at the answer if you’re really stuck. Just make sure you understand how the provided answer works before proceeding.

    • Write your own short programs using the concepts you have learned. Nothing is better than practice.

    Common site-related questions

    Q: How do I sign up for the site? How do I get a login?

    All parts of this site are accessible anonymously -- therefore, no user account or signup is needed!

    Q: These tutorials were originally written in 2007. Are they still relevant?

    Yes, absolutely.

    C++ doesn’t change very often, and when it does, the new content is largely additive. The tutorials have also been updated periodically based on language changes and readers’ feedback.

    Q: Is there a PDF version of this site available for offline viewing?

    Unfortunately, there is not. The site is able to stay free for everyone because we’re ad-sponsored -- that model simply doesn’t work in PDF format. You are welcome to convert pages from this website into PDF (or any other) format for your own private use, so long as you do not distribute them.

    Q: What should I do if I get stuck on a concept?

    If you don’t understand something:

    • Read through the comments. Other readers may have encountered similar challenges.
    • Scan through the next lesson in the series -- your question may be answered there.
    • Use a search engine to see if your question (or error message) has been addressed elsewhere.
    • Ask your question on a site that is designed for programming Q&A, like Stack Overflow.

    If all else fails, skip the material you don’t understand, and come back to it later. You may find that something that was hard to understand is easier with the additional knowledge and context provided by other articles.

    Q: What do I do if I forget what something means?

    Use the Site index. Look up any topics you want to know more about there, and you’ll find links to the lessons where that topic is discussed.

    Q: How do I get an avatar for the comment section?

    The comment section uses gravatars. You can create one on Click the “Create your own gravatar” button and sign up. Your gravatar will be connected to your (optionally provided) email address.

    Q: Can you do a dark mode for this site?

    Not easily, but you can! See

    Finally, one small nag: This site is free because it is ad-supported. If you find yourself enjoying the lessons, please consider disabling your ad blocker.

    Alright, let’s get on with it!

    0.2 -- Introduction to programming languages
    No previous lesson

2 comments to 0.1 — Introduction to these tutorials

  • Nathaniel Washington

    [code]I will learn cpp[code]

  • Awesome content! Finally straightforward, free, and informative C++ content! I'm taking a break from Python and learning C++ for my robotics hobby,and eventually a career in robotics! Great work guys!

  • Tweeter

    Thank you fr this site!

  • Zach Roberts

    What order should I follow with the tutorials? Because there are chapter 4, 5, 6, then there are originally 4-6, and then O and S and P. I would assume 1-6 then original 4-7, but just reassuring myself on that. A little confused with all of the tabs. Probably gonna learn all of it anyways, but would rather know I'm learning something useful and not the same thing I have already learned in a different context.


    Thanks for nice contents, learning c++ in 2020 with this website. :)

  • Jack

    Have you made any sites for other programming languages?

  • Karl Phazer

    The foreword really assured me of the quality of the tutorials. Anyhow, I tried diabling my addblocker and the adds hurt my eye, maybe I could do a donation instead?

    • nascardriver


      Donations are accepted via paypal and bitcoin if you click "Support LearnCpp" on the left hand side.

      I hope you'll have a smooth ride thought the tutorials. If you have any questions, feel free to ask :)

  • RomanInk

    Hey guys. actually I have no background in coding in any computer language. Is this a good computer language to learn first? I actually like to learn how to code.

  • Mark Anderson

    Upon reading the first 'Welcome' section itself, my first instinct was to promptly whitelist the website. The genuine effort and love put into the content was readily apparent.

    A sincere thanks from the bottom of my heart for developing such a tremendous resource and choosing to make it completely free for everyone. My gratitude knows no bounds.

    I'll be clicking on the ads from time to time to send a regular stream of a few cents your way. :)

    Best regards..

  • Iain

    I've just decided on a new career path - coding!
    First language to learn is C++
    And this site looks like an incredible resource
    Thanks in advance guys, really excited about beginning this study

  • Miroslav Kocic

    I first tried doing this tutorial about six years ago, and have returned to it three times since then.  Only on the last occasion did I get as far as the chapters on OOP.  This time I hope I can stick with it and complete the whole tutorial.

  • I am newbie to c++ but good with ds & algo concepts.So I will try hard to make this 18 chapters in 18 days hope I can do that. How can get refrreals from employee of product based company ,should I start a youtube channel where I will just wrap up what I learnt every day . I am currently final year computer science engineering student but my resume and coding both sucks I have done zero projects but one thing I know at that is that I will go to a product based company and I will make it. Hope if any of you can mentor me plz help.I belong to a very poor family in this pandemic time we don't have anything to consume neither FOOD nor DATA.But I am trying hard to get a job because I don't have a hobby to die in starving. SO plz guys help I  have my LInkedIn id for contact

  • Raghavendra S Solanky

    Thanks God! I found this site to learn c++. I was new and got this in first attempt on google search.

    I would be thankful and appreciate to site's owner and site team to learn in different and deep way with good concepts and told about bad techniques too.

    This site was awesome. I'll always recommend to everyone learn c++ from here first!

    I don't have more words to express too much in too few words

  • Yousuf

    Thank you so much for making this website. This is only the site on whole internet which teaches C++ in the most basic way. My plan is: use this site as the primary learning medium of C++, if anything or any topics need more explanation google about them, take notes, and come back to this site and notes in future if I need to revisit the concepts I learned, also update my notes accordingly with newer information and my understanding.

    I like C++, mostly because it is hard and fast, and this language teaches learners the most programming techniques.

    My only request to the site maintainers and instructors: please, notify the learners or visitors before if, under any unfortunate circumstances, this site is going down or not going to maintain anymore. Please.

  • Paul Huber

    I just started this next portion of my life. I wish this website was in pdf, so I can read it like a ebook.

  • shourabh kumar

    just going to start from this site, my 100 day of code. i will always come to this site for next 100 days. and will try to complete this course in one year

  • Christine Willis

    Thanks Denis.

  • Xoltri

    Awesome, i did an oop course in uni but i feel like I'm forgetting a lot of the concepts. hopefully, this will be good

  • I feel encouraged and supported after reading the text, let's get to it.

  • Christine Willis

    Grateful thanks for finding your site again. Have been ill for 2 years. Now back onboard to continue this journey.

Leave a Comment

Put all code inside code tags: [code]your code here[/code]