C++


Memulai

hello.cpp

#include <iostream>

int main() {
    std::cout << "Halo CheatSheets\n";
    return 0
}

Mengkompilasi dan menjalankan

$ g++ hello.cpp -o hello
$ ./hello
Halo CheatSheets

Variabel-variabel

int jumlah = 5; // Bilangan bulat
float f = 0.95; // Bilangan mengambang
double PI = 3.14159; // Bilangan mengambang
char ya = 'Y'; // Karakter
std::string s = "SAYA"; // String (teks)
bool isRight = true; // Boolean

// Konstanta
const float RATE = 0.8;

int umur {25}; // Sejak C++11
std::cout << umur; // Cetak 25

Tipe-tipe Data Primitif

Tipe Data Ukuran Rentang
int 4 byte -2^31^ ^to^ 2^31^-1
float 4 byte N/A
double 8 byte N/A
char 1 byte -128 ^to^ 127
bool 1 byte benar / salah
void N/A N/A
wchar_t 2 ^or^ 4 byte 1 karakter lebar
{.show-header}

Masukan Pengguna

int num;

std::cout << "Ketik sebuah angka: ";
std::cin >> num;

std::cout << "Anda memasukkan " << num;

Tukar

int a = 5, b = 10;
std::swap(a, b);

// Keluaran: a = 10, b = 5
std::cout << "a=" << a << ", b=" << b;

Komentar

// Satu komentar satu baris dalam C++

/* Ini adalah komentar beberapa baris
   dalam bahasa C++ */

Pernyataan Jika

if (a == 10) {
    // melakukan sesuatu
}

Lihat: Kondisional

Perulangan

for (int i = 0; i < 10; i++) {
    std::cout << i << "\n";
}

Lihat: Perulangan

Fungsi

#include <iostream>
 
void halo(); // Mendeklarasikan
 
int main() { // fungsi utama
    hello(); // Memanggil
}
 
void halo() { // Mendefinisikan
    std::cout << "Hello CheatSheets!\n";
}

Lihat: [Fungsi] (#c-fungsi)

Referensi

int i = 1;
int & ri = i; // ri adalah sebuah referensi ke i

ri = 2; // i sekarang diubah menjadi 2
std::cout << "i=" << i;

i = 3; // i sekarang berubah menjadi 3
std::cout << "ri=" << ri;

ri dan i merujuk ke lokasi memori yang sama.

Ruang nama

#include <iostream
namespace ns1 {int val(){return 5;}}
int main()
{
    std::cout << ns1::val();
}

#include <iostream>
namespace ns1 {int val(){return 5;}}
menggunakan namespace ns1;
menggunakan namespace std;
int main()
{
    cout << val();
}

Ruang nama memungkinkan pengenal global di bawah sebuah nama

Larik C++

Deklarasi

std::array<int, 3> marks; // Definisi
marks[0] = 92;
marks[1] = 97;
marks[2] = 98;

// Mendefinisikan dan menginisialisasi
std::array<int, 3> = {92, 97, 98};

// Dengan anggota-anggota yang kosong
std::array<int, 3> nilai = {92, 97};
std::cout << nilai[2]; // Keluaran: 0

Manipulasi

┌─────┬─────┬─────┬─────┬─────┬─────┐
| 92 | 97 | 98 | 99 | 98 | 94 |
└─────┴─────┴─────┴─────┴─────┴─────┘
   0 1 2 3 4 5

std::array<int, 6> nilai = {92, 97, 98, 99, 98, 94};

// Mencetak elemen pertama
std::cout << nilai[0];

// Mengubah elemen kedua menjadi 99
marks[1] = 99;

// Mengambil masukan dari pengguna
std::cin >> marks[2];

Menampilkan

char ref [5] = {'R', 'e', 'f'};

// Perulangan for berbasis rentang
for (const int &n : ref) {
    std::cout << std::string(1, n);
}

// Perulangan for tradisional
for (int i = 0; i < sizeof(ref); ++i) {
    std::cout << ref[i];
}

Multidimensi

     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] << " ";
    }
}
// Keluaran: 1 2 3 4 5 6 6 5 4 3 2 1

C++ Kondisional

Klausa Jika

if (a == 10) {
    // melakukan sesuatu
}

int jumlah = 16;

if (jumlah % 2 == 0)
{
    std::cout << "genap";
}
else
{
    std::cout << "ganjil";
}

// Keluaran: genap

Pernyataan Lain Jika

int skor = 99;
if (skor == 100) {
    std::cout << "Luar biasa";
}
else if (skor >= 90) {
    std::cout << "Luar biasa";
}
else if (skor >= 80) {
    std::cout << "Sangat Baik";
}
else if (skor >= 70) {
    std::cout << "Baik";
}
else if (skor >= 60)
    std::cout << "OK";
else
    std::cout << "Apa?";

Operator

Operator Relasional

a == b a sama dengan b
a != b a TIDAK sama dengan b
a < b a lebih kecil dari b
a > b a lebih besar dari b
a <= b a kurang dari atau sama dengan b
a >= b a lebih besar atau sama dengan b

Operator Penugasan

Contoh Setara dengan
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

Operator Logika

Contoh Arti
exp1 && exp2 Keduanya benar (AND)
`exp1
!exp exp adalah salah (NOT)

Operator Bitwise

Operator Deskripsi
a & b Biner AND
`a b`
a ^ b Biner XOR
~ a Komplemen Biner Satu
a << b Pergeseran Biner ke Kiri
a >> b Pergeseran Biner Kanan

Operator Ternary

           ┌── Benar ──┐
Hasil = Kondisi ? Exp1 : Exp2;
           └───── False ─────┘

int x = 3, y = 5, max;
max = (x > y) ? x : y;

// Keluaran: 5
std::cout << max << std::endl;

int x = 3, y = 5, max;
if (x > y) {
    max = x;
} else {
    max = y;
}
// Keluaran: 5
std::cout << max << std::endl;

Pernyataan Peralihan

int num = 2;
switch (num) {
    case 0:
        std::cout << "Nol";
        istirahat;
    case 1
        std::cout << "Satu";
        istirahat;
    kasus 2:
        std::cout << "Dua";
        istirahat;
    kasus 3:
        std::cout << "Tiga";
        break;
    default:
        std::cout << "Apa?";
        break;
}

Perulangan C++

While

int i = 0;
while (i < 6) {
    std::cout << i++;
}

// Keluaran: 012345

Do-while

int i = 1;
do {
    std::cout << i++;
} while (i <= 5);

// Keluaran: 12345

Lanjutkan pernyataan

for (int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        lanjutkan;
    }
    std::cout << i;
} // Keluaran: 13579

Perulangan tak terbatas

while (true) { // benar atau 1
    std::cout << "perulangan tak hingga";
}

for (;;) {
    std::cout << "perulangan tak terbatas";
}

for(int i = 1; i > 0; i++) {
    std::cout << "perulangan tak terbatas";
}

for_each (Sejak C++11)

#include <iostream>

int main()
{
    auto print = [](int num) { std::cout << num << std::endl; };

    std::array<int, 4> arr = {1, 2, 3, 4};
    std::for_each(arr.begin(), arr.end(), print);
    return 0;
}

Berbasis rentang (Sejak C++11)

for (int n : {1, 2, 3, 4, 5}) {
    std::cout << n << " ";
}
// Keluaran: 1 2 3 4 5

std::string halo = "CheatSheets.zip";
for (char c: halo)
{
    std::cout << c << " ";
}
// Keluaran: Q u i c k R e f . M E

Memecah pernyataan

int password, kali = 0;
while (password != 1234) {
    if (times++ >= 3) {
        std::cout << "Terkunci!\n";
        break;
    }
    std::cout << "Password: ";
    std::cin >> kata sandi; // masukan
}

Beberapa variasi

for (int i = 0, j = 2; i < 3; i++, j--){
    std::cout << "i=" << i << ",";
    std::cout << "j=" << j << ";";
}
// Keluaran: i=0,j=2;i=1,j=1;i=2,j=0;

Fungsi-fungsi C++

Argumen & Pengembalian

#include <iostream>

int add(int a, int b) {
    mengembalikan a + b;
}

int main() {
    std::cout << add(10, 20);
}

add adalah sebuah fungsi yang mengambil 2 buah int dan mengembalikan int

Kelebihan beban

void fun(string a, string b) {
    std::cout << a + " " + b;
}
void fun(string a) {
    std::cout << a;
}
void fun(int a) {
    std::cout << a;
}

Fungsi Bawaan

#include <iostream> // import library
#include <cmath> // mengimpor pustaka
 
int main() {
    // sqrt() berasal dari cmath
    std::cout << sqrt(9);
}

Kelas & Objek C++

Mendefinisikan Kelas

class MyClass {
  public:             // Penentu akses
    int myNum; // Atribut (variabel int)
    string myString; // Atribut (variabel string)
};

Membuat sebuah Objek

MyClass myObj; // Membuat objek dari MyClass

myObj.myNum = 15; // Mengatur nilai myNum menjadi 15
myObj.myString = "Hello"; // Mengatur nilai myString menjadi "Hello"

cout << myObj.myNum << endl; // Keluaran 15
cout << myObj.myString << endl; // Keluaran "Halo"

Konstruktor

kelas MyClass {
  public
    int myNum;
    string myString;
    MyClass() { // Konstruktor
      myNum = 0;
      myString = "";
    }
};

MyClass myObj; // Membuat objek dari MyClass

cout << myObj.myNum << endl; // Keluaran 0
cout << myObj.myString << endl; // Keluaran ""

Destruktor

kelas MyClass {
  public
    int myNum;
    string myString;
    MyClass() { // Konstruktor
      myNum = 0;
      myString = "";
    }
    ~MyClass() { // Destruktor
      cout << "Objek dihancurkan." << endl;
    }
};

MyClass myObj; // Membuat objek dari MyClass

// Kode di sini...

// Objek akan dihancurkan secara otomatis ketika program keluar dari scope

Metode Kelas

kelas MyClass {
  public
    int myNum;
    string myString;
    void myMethod() { // Metode/fungsi yang didefinisikan di dalam kelas
      cout << "Halo Dunia!" << endl;
    }
};

MyClass myObj; // Membuat objek dari MyClass
myObj.myMethod(); // Memanggil metode

Pengubah Akses

kelas MyClass {
  public:     // Penentu akses publik
    int x; // Atribut publik
  private:    // Penentu akses privat
    int y; // Atribut privat
  protected  // Penentu akses yang dilindungi
    int z; // Atribut yang dilindungi
};

MyClass myObj;
myObj.x = 25; // Diizinkan (publik)
myObj.y = 50; // Tidak diperbolehkan (private)
myObj.z = 75; // Tidak diizinkan (dilindungi)

Pengambil dan Pengatur

class MyClass {
  private
    int myNum;
  public:
    void setMyNum(int num) { // Pengatur
      myNum = num;
    }
    int getMyNum() { // Pengambil
      kembalikan myNum;
    }
};

MyClass myObj;
myObj.setMyNum(15); // Mengatur nilai myNum menjadi 15
cout << myObj.getMyNum() << endl; // Keluaran 15

Pewarisan

kelas Kendaraan {
  public
    string merek = "Ford";
    void membunyikan klakson() {
      cout << "Tuut, tuut!" << endl;
    }
};

class Mobil : public Kendaraan {
  public
    string model = "Mustang";
};

Mobil myCar;
myCar.membunyikan klakson(); // Keluaran "Tuut, tuut!"
cout << myCar.brand + " " + myCar.model << endl; // Keluaran "Ford Mustang"

Preprocessor C++

Preprocessor

Termasuk

#include "iostream"
#include <iostream>

Mendefinisikan

#define FOO
#define FOO "halo"

#undef FOO

If

#ifdef DEBUG
  console.log('hi');
#elif didefinisikan VERBOSE
  ...
#else
  ...
#endif

Kesalahan

#if VERSI == 2.0
  #error Tidak didukung
  #peringatan Tidak benar-benar didukung
#endif

Makro

#define DEG(x) ((x) * 57.29)

Token concat

#define DST(nama) nama##_s nama##_t
DST(object); #=> object_s object_t;

Stringifikasi

#define STR(nama) #nama
char * a = STR(object); #=> char * a = "object";

berkas dan baris

#define LOG(msg) console.log(__FILE__, __LINE__, msg)
#=> console.log("file.txt", 3, "hey")

Lain-lain

Urutan Pelarian

Urutan Pelarian Karakter
\b Backspace
\f Umpan formulir
\n Baris Baru
\r Return
\t Tab horizontal
\v Tab vertikal
\\ Garis miring
\' Tanda petik tunggal
\" Tanda petik ganda
\" Tanda tanya
\0 Karakter Null

Kata kunci

Preprocessor

Lihat juga