Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Whether you have had C++ before or not, this page is made to give you a brief introduction to it's most important features.

As always, do keep in mind that this is only one of many good tutorials on C++. We highly recommend you to check out other tutorials online as well, as they might explain things from a different point of view or include information that is not included here. Some of these tutorials are:

We will also use hyperlinks to relevant documentation when explaining various topics. We encourage you to get used to using these, as they will definitely help you out later.

Info

Should you have a suggestions to any specific topic that you would like to see included here, please contact us by mail or through the forums.


Info

Want to get better at programming, check out our page Tips and tricks for coding.



Panel
borderColor#dfe1e5
bgColor#eff9ff
borderWidth2
titlePage content

Table of Contents


Getting started

After downloading Visual Studio (or another compiler, though they won't be explained here), it is time to make our first project!

Expand
titleMake new project


Info

Visual Studio 2019 is used in this tutorial.

  1. Open VS and click on Create a new project. Choose then an Empty Project (make sure it is a C++ project)and click Next.
  2. Proceed by giving your project a name (e.g. "MyProject" and a location. Click Create.
  3. Your project will then open. Here, you may edit the layout of VS as you want by dragging the different modules around.
  4. To write our code, we will need a new file in our project. To add a new file, right-click on your project name → Add → New Item. You may also use the shortcut Ctrl + Shift + A.
  5. Choose C++ File (.cpp), rename it if you want and click Add. The difference between a C++ File (.cpp) (often reffered to as only "cpp file" or "source file") and a Header File (.h) is very important and will be discussed later, but for now, just ignore it.
  6. You have now made your first project! Continue reading at this page to learn how C++ is written.

Now that we have made a working project, let's implement the well known Hello World program.

Expand
titleHello World

To get a better understanding of how the code works, we will first implement the complete program and afterwards we will go through it step by step. To run the code, go to Debug → Start debugging/Start Without Debugging.

Code Block
languagecpp
titleHello World
#include <iostream>
using namespace std;

int main() {
	cout << "Hello World!";
	return 0;
}

Info

Be aware of the semicolons.


Alright, time to take a deeper look at the code. The first line is

Code Block
languagecpp
#include <iostream>

In C++, much like in Python, we have to include libraries (headers) to perform certian actions, e.g. writing to file or solving math equations. iostream is the standard input/output streams library that enables us to print to screen (or e.g. a file).

Code Block
languagecpp
using namespace std;

In this example we have chosen to include the line above to make getting into C++ easier. What using namespace std does is to silently insert std:: (std = standard) as a prefix to a lot of our standard functions. In the example above, cout will therefore be interpreted as std::cout. The short answer to why this is necessary is to specifiy where (which library) the function comes from in the case we have multiple functions with the same name. An analogy to this is how two students with the same name "Tom" are differentiated by adding e.g. the first letter of their last name; "Tom H." and "Tom B.".

By specifying the standard namespace for our entire program, we will avoid having to write std:: before many of our functions, which is benefitial when first learning C++. However, note that this shortcut comes with a cost. To learn more about these negatives, read this post on Stack Overflow explaining why it is considered a bad practice.

Code Block
languagecpp
titleHello World, but without using namespace std;
#include <iostream>

int main() {
	std::cout << "Hello World!";
	return 0;
}

Next up is

Code Block
languagecpp
int main() {
	...
	return 0
}

What you see above is an example of a function in C++ (functions will be further covered later). The brackets " { " and " } " are in C++ used to group a block of statements, in this case those within the function main. Other examples where they are used are in e.g. for loops or if else statements. The equivilant to this in MATLAB is then end statement, and in Python it is the whitespace indent.

The special thing about the main function is that in C++, a program shall contain a global function named main, which is the designated start of the program (the only function called when running). This is very different from both Python and MATLAB, where programs can be written without using any functions at all.

To us, it means that every action we want to execute has to be described from within the main function, although you're of course allowed to call on other functions.

Code Block
languagecpp
titleHello World, not using main function -> Error
#include <iostream>
using namespace std;

cout << "Hello World!";

// Lines starting with "//" is a comment
// This code will result in an error when trying to build.

Lastly, we have

Code Block
languagecpp
cout << "Hello World!";
// or, as previously mentioned
std::cout << "Hello World!";

cout is the standard output stream (stands for character output), and is what enables us to write to screen. cout is a statement, where "<<" is the insertion operator indicating what follows is inserted into cout. We will describe this even further in a later section. Also, notice that every statement is terminated with a semicolon ( ; ). Forgetting this is a very common source of error.

Congratulations, we have now not just made a simple program, but we have also dove deeper into the meaning of our code, thus already touching multiple important features in C++. For even more details on the Hello World example, visit this page.

Variables

You are probably familiar from Python or MATLAB that variables can be e.g. integers, floating-points or strings. In C++, variables are handled a bit more carefully. Among other things, we need to declare what type our variable is before we can give it a value.

Expand
titleMore on variables

As mentioned, variables can not be given any value without first beeing told what kind of data will be stored there. A full list of all variables and their size/precision can be found at the variable documentation, but some of the most used are

Code Block
languagecpp
int myInteger					// e.g. -1, 2, 3 ...
unsigned int myPositiveInteger	// e.g. 0, 1, 2 ...
float myFloat					// e.g. -1.12, 2, 10e2 ...
double myDouble					// similar to float, but in general, float has 7 digits of precision while double has 15.
bool myBool						// 1, 0, true, false
char myChar						// 'a', 'b', 'v' ... One character
string myString					// "a", "Hello", "Hi again" ...			

In the example above, some variables are a bit different.

  • String is not a fundamental type, and has to be included by it's own library, #include <string>
  • Char is in itself only one character, but it may be combined into a type of string using arrays. We will not cover this here, but you may find more information about it on e.g. the char documentation.


When initializating variables in C++, three methods are used:

Code Block
languagecpp
#include <iostream>
using namespace std;

int main() {
	int a(1);		// Method 1
	int b = 2;		// Method 2
	int c{ 3 };		// Method 3

	cout << a << endl << b << endl << c;	// "endl" means "end line" and makes a new line
	return 0;
}
// Output:
// 1
// 2
// 3


When working with different variables, keep in mind how the variable operates. An example of this is the int, which will always round down to the lowest integer.

Code Block
languagecpp
#include <iostream>
using namespace std;

int main() {
	int a = 10;
	int b = 3;
	double c = 3

	cout << a / b << endl;	// Output: 3, since a and b is an int -> result is an int
	cout << a / c << endl;	// Output: 3.33333, since c is a double -> result is a double
	cout << static_cast<float>(a) / static_cast<float>(b) << endl;	// Output: 3.33333, since we temporarily interpret the variables as floats
	return 0;
}

As shown, static_cast< new_type >( expression ) can temporarily convert a variable to another type in order to bypass the limits set by the original type. To read more about other type conversions, visit this page.

Statements and flow control

We will now have a look at the selection statments if else and switch case and the iteration statments for loops and while loops, as well as some minor details included in these. Please note that we will assume that you understand how the different statements work in general (maybe not switch case, as this is not included in Python), thus enabling us to focus more on the syntax, as well some useful tips and tricks. However, if you're completely new to this, have a look at the tutorials linked at the top of this page for an even more detailed introduction.

Expand
titleIf else statement

The if else statement is used to execute a block if and only if a condition is fulfilled.

Code Block
languagecpp
if (x < 0)
	cout << x << " is a negative number" << endl;		// When we only have one line to execute, we don't have to use { ... }
else if (x > 0) {										// This block has more than one line, thus we have to 
	cout << x << " is a positive number" << endl;		   // indicate the beginning and end with " { "  and " } "
	cout << "This is the second line in this block" << endl;
}
else
	cout << x << " is equal to 0" << endl;





BibTeX Display Table