Open Eggbert

C++

C++ is programming language created in 1985 by Bjarne Stroustrup.

C++ is based on the C programming language. OOP in C++ was inspired by the Simula67 programming language. Almost all C programs are valid C++ programs.

The name of the C++ programming language is related to the incremental operator "++" and was created by Rick Mascitti in Summer 1983 and was first used in December 1983.

The C++ predecessor is "C with Classes", which is an extension of the C programming language created by Bjarne Stroustup in 1979.

Reason for creation of C++: To make the programming easier without the usage or assembler or C or other programming languages.

Advantages: Programming paradigms supported by C++: C++ remains one of the most powerful and versatile programming languages. Key Features of C++: Common Applications of C++: Modern C++ and Future Trends: Modern C++ focuses on improving developer productivity while maintaining backward compatibility. Recent updates have introduced concepts, coroutines, modules, and ranges to simplify development. The future of C++ is expected to bring better safety, concurrency, and performance enhancements, keeping it relevant for decades to come.

Comparison of C++ and C

The following are examples of additional features in C++ compared to C:

How to create a C++ program

creating the C++ source code (text files), compiling to object files, linking object files to an executable version of the program.

Other

How to manage memory automatically: Boehm-Demers-Weiser Garbage Collector

Functions

C++ program consists of functions. Function consists of statements. Each statement must end with the semicolon character. Prototype vs implementation.

Function main()

Function main() is the entrypoint of an C++ application.

Variants:

Console

How to delay program and wait for the press of the key Enter: cin.get();
Printing text to console: cout << "some text"; //operator overloading: <<
Reading text from console: cin >> carrots;
How to print end line: "\n" or std::endl

Comments

One line: // comment
Multi line: /* comment */

Preprocessor directives

#include <iostream>

Includes file iostream

#define INT_MAX 32767

Replaces all INT_MAX occurences by 32767

Importing namespaces

using namespace std;
using std::count;

C++ statement

Each C++ statement must be ended with the semicolon character ;

Declaration (statement type)

This allocates memory.
Example: int carrots;

Assignment (statement type)

Example: carrots 15;

Initialization (statement type)

int carrots 15;
//or
int carrots (15);

Key words

return, void, int, const And others

Variable

Variable is named location in the memory with its type definition.
You can get the location in the memory with the & operator.

Data types

Void

Empty set of values, cannot be used as the type of variable.

Integral

short: at least 16 bits
int: at least the same size as short (since -32768 until 32 767)
long: at least 32 bits, at least the same size as int
long long (since C++ 99): at least 64 bits, at least the same size as long
unsigned: unsigned short, unsigned int, unsigned long, unsigned long long
Octal: starts with 0
Hexadecimal: starts with 0x or 0X
char
wchar_t
bool

Floating-point

Combined data types

Operators

sizeof

Class

Class is user defined type

C++ Decompilers

Ghidra

Books: https://www.amazon.com/Ghidra-Book-Definitive-Guide/dp/1718501021

IDA

https://hex-rays.com/decompiler

C++ Disassemblers

Objdump

How to convert a x86 exe file to the Assembly language

objdump -D -M intel your_file.exe > output.asm -D means to disassembly the whole file
-M intel sets the format of the assembly to Intel

Books