3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
QuickRef.ME Stars 4.6k
C++
C++ quick reference cheat sheet that provides basic syntax and methods.
# Getting Started
hello.cpp
#include <iostream>
int main() {
std::cout << "Hello QuickRef\n";
return 0;
}
Compiling and running
$ g++ hello.cpp -o hello
$ ./hello
Hello QuickRef
Variables
int number = 5; // Integer
float f = 0.95; // Floating number
double PI = 3.14159; // Floating number
char yes = 'Y'; // Character
std::string s = "ME"; // String (text)
bool isRight = true; // Boolean
// Constants
const float RATE = 0.8;
https://quickref.me/cpp 1/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
int age {25}; // Since C++11
Primitive Data Types
Data Type Size Range
int 4 bytes -231 to 231-1
float 4 bytes N/A
double 8 bytes N/A
char 1 byte -128 to 127
bool 1 byte true / false
void N/A N/A
wchar_t 2 or 4 bytes 1 wide character
User Input
int num;
std::cout << "Type a number: ";
std::cin >> num;
std::cout << "You entered " << num;
Swap
int a = 5, b = 10;
std::swap(a, b);
// Outputs: a=10, b=5
std::cout << "a=" << a << ", b=" << b;
Comments
// A single one line comment in C++
/* This is a multiple line comment
in C++ */
If statement
https://quickref.me/cpp 2/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
if (a == 10) {
// do something
}
Loops
for (int i = 0; i < 10; i++) {
std::cout << i << "\n";
}
See: Loops
Functions
#include <iostream>
void hello(); // Declaring
int main() { // main function
hello(); // Calling
}
void hello() { // Defining
std::cout << "Hello QuickRef!\n";
}
See: Functions
References
int i = 1;
int& ri = i; // ri is a reference to i
ri = 2; // i is now changed to 2
std::cout << "i=" << i;
i = 3; // i is now changed to 3
std::cout << "ri=" << ri;
ri and i refer to the same memory location.
Namespaces
#include <iostream>
namespace ns1 {int val(){return 5;}}
https://quickref.me/cpp 3/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
int main()
{
std::cout << ns1::val();
}
#include <iostream>
namespace ns1 {int val(){return 5;}}
using namespace ns1;
using namespace std;
int main()
{
cout << val();
}
Namespaces allow global identifiers under a name
# C++ Arrays
Declaration
std::array<int, 3> marks; // Definition
marks[0] = 92;
marks[1] = 97;
marks[2] = 98;
// Define and initialize
std::array<int, 3> = {92, 97, 98};
// With empty members
std::array<int, 3> marks = {92, 97};
std::cout << marks[2]; // Outputs: 0
Manipulation
┌─────┬─────┬─────┬─────┬─────┬─────┐
| 92 | 97 | 98 | 99 | 98 | 94 |
└─────┴─────┴─────┴─────┴─────┴─────┘
0 1 2 3 4 5
std::array<int, 6> marks = {92, 97, 98, 99, 98, 94};
// Print first element
https://quickref.me/cpp 4/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
std::cout << marks[0];
// Change 2th element to 99
marks[1] = 99;
// Take input from the user
std::cin >> marks[2];
Displaying
char ref[5] = {'R', 'e', 'f'};
// Range based for loop
for (const int &n : ref) {
std::cout << std::string(1, n);
}
// Traditional for loop
for (int i = 0; i < sizeof(ref); ++i) {
std::cout << ref[i];
}
Multidimensional
j0 j1 j2 j3 j4 j5
┌────┬────┬────┬────┬────┬────┐
i0 | 1 | 2 | 3 | 4 | 5 | 6 |
├────┼────┼────┼────┼────┼────┤
i1 | 6 | 5 | 4 | 3 | 2 | 1 |
└────┴────┴────┴────┴────┴────┘
int x[2][6] = {
{1,2,3,4,5,6}, {6,5,4,3,2,1}
};
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 6; ++j) {
std::cout << x[i][j] << " ";
}
}
// Outputs: 1 2 3 4 5 6 6 5 4 3 2 1
https://quickref.me/cpp 5/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
# C++ Conditionals
If Clause
if (a == 10) {
// do something
}
int number = 16;
if (number % 2 == 0)
{
std::cout << "even";
}
else
{
std::cout << "odd";
}
// Outputs: even
Else if Statement
int score = 99;
if (score == 100) {
std::cout << "Superb";
}
else if (score >= 90) {
std::cout << "Excellent";
}
else if (score >= 80) {
std::cout << "Very Good";
}
else if (score >= 70) {
std::cout << "Good";
}
else if (score >= 60)
std::cout << "OK";
else
std::cout << "What?";
Operators
Relational Operators
https://quickref.me/cpp 6/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
a == b a is equal to b
a != b a is NOT equal to b
a < b a is less than b
a > b a is greater b
a <= b a is less than or equal to b
a >= b a is greater or equal to b
Assignment Operators
a += b Aka a = a + b
a -= b Aka a = a - b
a *= b Aka a = a * b
a /= b Aka a = a / b
a %= b Aka a = a % b
Logical Operators
exp1 && exp2 Both are true (AND)
exp1 || exp2 Either is true (OR)
!exp exp is false (NOT)
Bitwise Operators
a & b Binary AND
a | b Binary OR
a ^ b Binary XOR
~ a Binary One's Complement
a << b Binary Shift Left
a >> b Bi Shift Ri ht
Ternary Operator
┌── True ──┐
Result = Condition ? Exp1 : Exp2;
└───── False ─────┘
https://quickref.me/cpp 7/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
int x = 3, y = 5, max;
max = (x > y) ? x : y;
// Outputs: 5
std::cout << max << std::endl;
int x = 3, y = 5, max;
if (x > y) {
max = x;
} else {
max = y;
}
// Outputs: 5
std::cout << max << std::endl;
Switch Statement
int num = 2;
switch (num) {
case 0:
std::cout << "Zero";
break;
case 1:
std::cout << "One";
break;
case 2:
std::cout << "Two";
break;
case 3:
std::cout << "Three";
break;
default:
std::cout << "What?";
break;
}
# C++ Loops
While
int i = 0;
while (i < 6) {
https://quickref.me/cpp 8/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
std::cout << i++;
}
// Outputs: 012345
Do-while
int i = 1;
do {
std::cout << i++;
} while (i <= 5);
// Outputs: 12345
Continue statements
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
std::cout << i;
} // Outputs: 13579
Infinite loop
while (true) { // true or 1
std::cout << "infinite loop";
}
for (;;) {
std::cout << "infinite loop";
}
for(int i = 1; i > 0; i++) {
std::cout << "infinite loop";
}
for_each (Since C++11)
#include <iostream>
int main()
{
auto print = [](int num) { std::cout << num << std::endl; };
https://quickref.me/cpp 9/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
std::array<int, 4> arr = {1, 2, 3, 4};
std::for_each(arr.begin(), arr.end(), print);
return 0;
}
Range-based (Since C++11)
for (int n : {1, 2, 3, 4, 5}) {
std::cout << n << " ";
}
// Outputs: 1 2 3 4 5
std::string hello = "QuickRef.ME";
for (char c: hello)
{
std::cout << c << " ";
}
// Outputs: Q u i c k R e f . M E
Break statements
int password, times = 0;
while (password != 1234) {
if (times++ >= 3) {
std::cout << "Locked!\n";
break;
}
std::cout << "Password: ";
std::cin >> password; // input
}
Several variations
for (int i = 0, j = 2; i < 3; i++, j--){
std::cout << "i=" << i << ",";
std::cout << "j=" << j << ";";
}
// Outputs: i=0,j=2;i=1,j=1;i=2,j=0;
# C++ Functions
Arguments & Returns
https://quickref.me/cpp 10/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
std::cout << add(10, 20);
}
add is a function taking 2 ints and returning int
Overloading
void fun(string a, string b) {
std::cout << a + " " + b;
}
void fun(string a) {
std::cout << a;
}
void fun(int a) {
std::cout << a;
}
Built-in Functions
#include <iostream>
#include <cmath> // import library
int main() {
// sqrt() is from cmath
std::cout << sqrt(9);
}
# C++ Classes & Objects
Defining a Class
class MyClass {
public: // Access specifier
int myNum; // Attribute (int variable)
string myString; // Attribute (string variable)
https://quickref.me/cpp 11/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
};
Creating an Object
MyClass myObj; // Create an object of MyClass
myObj.myNum = 15; // Set the value of myNum to 15
myObj.myString = "Hello"; // Set the value of myString to "Hello"
cout << myObj.myNum << endl; // Output 15
cout << myObj.myString << endl; // Output "Hello"
Constructors
class MyClass {
public:
int myNum;
string myString;
MyClass() { // Constructor
myNum = 0;
myString = "";
}
};
MyClass myObj; // Create an object of MyClass
cout << myObj.myNum << endl; // Output 0
cout << myObj.myString << endl; // Output ""
Destructors
class MyClass {
public:
int myNum;
string myString;
MyClass() { // Constructor
myNum = 0;
myString = "";
}
~MyClass() { // Destructor
cout << "Object destroyed." << endl;
}
};
https://quickref.me/cpp 12/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
MyClass myObj; // Create an object of MyClass
// Code here...
// Object is destroyed automatically when the program exits the scope
Class Methods
class MyClass {
public:
int myNum;
string myString;
void myMethod() { // Method/function defined inside the class
cout << "Hello World!" << endl;
}
};
MyClass myObj; // Create an object of MyClass
myObj.myMethod(); // Call the method
Access Modifiers
class MyClass {
public: // Public access specifier
int x; // Public attribute
private: // Private access specifier
int y; // Private attribute
protected: // Protected access specifier
int z; // Protected attribute
};
MyClass myObj;
myObj.x = 25; // Allowed (public)
myObj.y = 50; // Not allowed (private)
myObj.z = 75; // Not allowed (protected)
Getters and Setters
class MyClass {
private:
int myNum;
public:
void setMyNum(int num) { // Setter
https://quickref.me/cpp 13/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
myNum = num;
}
int getMyNum() { // Getter
return myNum;
}
};
MyClass myObj;
myObj.setMyNum(15); // Set the value of myNum to 15
cout << myObj.getMyNum() << endl; // Output 15
Inheritance
class Vehicle {
public:
string brand = "Ford";
void honk() {
cout << "Tuut, tuut!" << endl;
}
};
class Car : public Vehicle {
public:
string model = "Mustang";
};
Car myCar;
myCar.honk(); // Output "Tuut, tuut!"
cout << myCar.brand + " " + myCar.model << endl; // Output "Ford Mustang"
# C++ Preprocessor
Preprocessor
if elif
else endif
ifdef ifndef
define undef
https://quickref.me/cpp 14/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
include line
error pragma
defined __has_include
__has_cpp_attribute export
import module
Includes
#include "iostream"
#include <iostream>
Defines
#define FOO
#define FOO "hello"
#undef FOO
If
#ifdef DEBUG
console.log('hi');
#elif defined VERBOSE
...
#else
...
#endif
Error
#if VERSION == 2.0
#error Unsupported
#warning Not really supported
#endif
Macro
#define DEG(x) ((x) * 57.29)
Token concat
#define DST(name) name##_s name##_t
https://quickref.me/cpp 15/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
DST(object); #=> object s object t;
Stringification
#define STR(name) #name
char * a = STR(object); #=> char * a = "object";
file and line
#define LOG(msg) console.log(__FILE__, __LINE__, msg)
#=> console.log("file.txt", 3, "hey")
# Miscellaneous
Escape Sequences
\b Backspace
\f Form feed
\n Newline
\r Return
\t Horizontal tab
\v Vertical tab
\\ Backslash
\' Single quotation mark
\" Double quotation mark
\? Question mark
\0 Null Character
Keywords
https://quickref.me/cpp 16/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
alignas alignof and and_eq asm
atomic_cancel atomic_commit atomic_noexcept auto bitand
bitor bool break case catch
char char8_t char16_t char32_t class
compl concept const consteval constexpr
constinit const_cast continue co_await co_return
co_yield decltype default delete do
double dynamic_cast else enum explicit
export extern false float for
friend goto if inline int
long mutable namespace new noexcept
not not_eq nullptr operator or
or_eq private protected public reflexpr
register reinterpret_cast requires return short
signed sizeof static static_assert static_cast
struct switch synchronized template this
thread_local throw true try typedef
typeid typename union unsigned using
Preprocessor
if elif
else endif
ifdef ifndef
define undef
include line
error pragma
https://quickref.me/cpp 17/18
3/1/24, 1:58 PM C++ Cheat Sheet & Quick Reference
defined __has_include
__has_cpp_attribute export
import module
# Also see
C++ Infographics & Cheat Sheets (hackingcpp.com)
C++ reference (cppreference.com)
C++ Language Tutorials (cplusplus.com)
Top Cheatsheet
Python Cheatsheet Vim Cheatsheet
Quick Reference Quick Reference
JavaScript Cheatsheet Bash Cheatsheet
Quick Reference Quick Reference
Recent Cheatsheet
Remote Work Revolution Cheatsheet Homebrew Cheatsheet
Quick Reference Quick Reference
PyTorch Cheatsheet Taskset Cheatsheet
Quick Reference Quick Reference
© 2023 QuickRef.ME, All rights reserved.
https://quickref.me/cpp 18/18