Anda di halaman 1dari 93

PEMROGRAMAN BERORIENTASI OBJEK

CATATAN DIGITAL

B.TECH
(I TAHUN – II SEM)
(2018-19)

DEPARTEMEN CSE & IT

LNVETOLEARN&PELAJARI

KULIAH TEKNIK & TEKNOLOGI MALLA REDDY


(Lembaga Otonom – UGC, Pemerintah India)
Diakui berdasarkan 2(f) dan 12 (B) UGC ACT 1956 (Berafiliasi dengan JNTUH, Hyderabad, Disetujui oleh AICTE -
Diakreditasi oleh NBA & NAAC – Grade 'A' - Bersertifikat ISO 9001:2015) Maisammaguda, Dhulapally (Post Via.
Hakimpet), Secunderabad – 500100, Negara Bagian Telangana, India.

I Tahun B.Tech II LT/P/DC


SEM 4 1/-/- 3
(R18A0502) PEMROGRAMAN BERORIENTASI OBJEK

Tujuan
• Untuk mengajarkan siswa konsep pemrograman berorientasi objek dan prosedur
• Untuk membedakan antara fungsi, kelas dan objek
• Untuk belajar membebani fungsi dan operator
• Untuk merancang aplikasi menggunakan teknik manajemen memori dinamis
• Untuk mengajar siswa untuk mengimplementasikan pemrograman generik dan penanganan
pengecualian

Unit I
Pengantar Pemrograman Berorientasi Objek: Paradigma berorientasi objek-Perbedaan antara
Pemrograman Berorientasi Objek dan Pemrograman berorientasi prosedur, Konsep dasar
Pemrograman Berorientasi Objek, Enkapsulasi, Pewarisan dan Polimorfisme, Manfaat OOP, Struktur
program C++, namespace, Tipe data, token C++ , Pengidentifikasi, Variabel, Konstanta, Operator,
Struktur Kontrol & Loop.

Unit-II
Fungsi, Kelas, dan Objek:
Pengenalan Kelas, Definisi Kelas, Mendefinisikan Anggota, Objek, Kontrol Akses, Lingkup Kelas,
Operator Resolusi Lingkup, Fungsi Inline, Alokasi Memori untuk Objek, Anggota Data Statis, Fungsi
Anggota Statis, Array Objek, Objek sebagai Argumen Fungsi, Fungsi Teman .

Unit-III
Konstruktor, Destruktor, Warisan:
Pengantar Konstruktor, Konstruktor Default, Konstruktor Berparameter, Salin Konstruktor, Banyak
Konstruktor dalam Kelas, Destruktur.
Warisan :
Pengantar pewarisan, Mendefinisikan Kelas Turunan, Warisan Tunggal, Warisan Berganda, Warisan
Bertingkat, Warisan Hirarkis, Warisan Hibrida.

Unit-IV
Pointer, Fungsi Virtual, dan Polimorfisme:
Pengantar Manajemen memori, operator baru dan operator hapus, Pointer ke objek, Pointer ke Kelas
Turunan, Polimorfisme, Kompilasi polimorfisme waktu, Polimorfisme waktu berjalan, Fungsi Virtual,
Overloading- Fungsi Overloading, Overloading operator.

Unit-V
Penanganan Templat dan Pengecualian:
Pengantar Templat, Templat Kelas, Templat Kelas dengan Banyak Parameter, Templat Fungsi,
Templat Fungsi dengan Banyak Parameter.

Penanganan pengecualian:
Dasar-dasar Penanganan Eksepsi, Jenis-Jenis Eksepsi, Mekanisme Penanganan Eksepsi, Mekanisme
Melempar dan Menangkap, Memutar Ulang Eksepsi, Menentukan Eksepsi.

Hasil:
• Untuk membedakan pemrograman berorientasi objek dan pemrograman prosedural.
• Untuk membangun kelas, fungsi dan objek
• Untuk mengimplementasikan konstruktor, destruktor, dan pewarisan
• Untuk mengembangkan program menggunakan teknik manajemen memori dinamis
• Untuk menerapkan penanganan pengecualian dan pemrograman generik.

Buku Teks:
1. Pemrograman Berorientasi Objek dengan C++ oleh Balagurusamy
2. C++, Referensi Lengkap, Edisi ke -4, Herbert Schildt, TMH.

Referensi:
1. C++ Primer, Edisi ke -3, SBLippman dan J.Lajoie, Pearson Education.
2. Bahasa Pemrograman C++, Edisi ke -3, B.Stroutstrup, Pearson Educ
UNIT 1

Konsep Pemrograman Berorientasi Objek: Paradigma berorientasi objek-perbedaan antara Pemrograman


Berorientasi Objek dan Pemrograman Berorientasi Prosedur, Konsep Dasar Pemrograman Berorientasi Objek,
Enkapsulasi, Pewarisan dan Polimorfisme. Manfaat OOP .Struktur program C++, namespace, tipe data, token
C++, pengidentifikasi, variabel, konstanta, operator, struktur kontrol & loop.

Sekilas tentang bahasa C:


1. Bahasa C dikenal sebagai bahasa berorientasi struktur atau bahasa berorientasi prosedur
2. Menggunakan pendekatan pemrograman top-down di mana masalah dipandang sebagai urutan tugas yang
harus dilakukan.
3. Semua kode program c dapat dijalankan dalam C++ tetapi sebaliknya banyak yang tidak mungkin
4. Kelebihan fungsi dan kelebihan beban operator tidak dimungkinkan.
5. Variabel lokal hanya dapat dideklarasikan di awal blok.
6. Kontrol program melalui lompatan dan panggilan ke subrutin.
7. Polimorfisme, enkapsulasi, dan pewarisan tidak dimungkinkan.
Untuk pemecahan masalah, masalah dibagi menjadi beberapa modul. Setiap modul adalah subprogram.
8. Properti abstraksi data tidak didukung oleh bahasa berorientasi prosedur.
9. Data dalam bahasa berorientasi prosedur terbuka dan dapat diakses oleh fungsi apa pun.

Gambaran umum bahasa C++:


1. C ++ dapat dianggap sebagai versi inkremental dari bahasa c yang terdiri dari semua konstruksi bahasa
pemrograman dengan fitur baru yang ditambahkan dari pemrograman berorientasi objek.
2. c ++ adalah bahasa pemrograman berorientasi struktur (prosedur) dan berorientasi objek.
3. Ekstensi file program C++ adalah ".CPP"
4. Kelebihan fungsi dan kelebihan beban operator dimungkinkan.
5. Variabel dapat dideklarasikan secara inline yaitu bila diperlukan
6. Dalam c ++ lebih banyak penekanan diberikan pada data daripada prosedur
7. Polimorfisme, enkapsulasi, dan pewarisan dimungkinkan.
8. Properti abstraksi data didukung oleh c++.
9. Akses data terbatas. Itu dapat diakses dengan menyediakan berbagai mode visibilitas baik untuk fungsi data
maupun anggota. di sana dengan memberikan keamanan data dengan menyembunyikan data
10. Pengikatan dinamis didukung oleh C++
11. .Ini mendukung semua fitur bahasa c
12.Ini bisa disebut sebagai versi inkremental dari bahasa c
Perbedaan Antara Pemrograman Berorientasi Prosedur (POP) & Pemrograman Berorientasi Objek
(OOP)

Pemrograman Berorientasi Prosedur Pemrograman berorientasi objek


1
program dibagi menjadi bagian-bagian kecil program dibagi menjadi bagian-bagian yang
yang disebut fungsi . disebut objek .
Pentingnya tidak diberikan pada data tetapi
Penting diberikan kepada data daripada prosedur
2
pada fungsi serta urutan tindakan yang harus
atau fungsi karena bekerja sebagai dunia nyata .
dilakukan.
3 mengikuti pendekatan Top Down . OOP mengikuti pendekatan Bottom Up .
OOP memiliki penentu akses bernama Publik,
4 Itu tidak memiliki specifier akses.
Pribadi, Dilindungi, dll.
Data dapat bergerak bebas dari fungsi ke objek dapat bergerak dan berkomunikasi satu
5
fungsi dalam sistem. sama lain melalui fungsi anggota.
Menambahkan data dan fungsi baru di POP OOP menyediakan cara mudah untuk
6
tidaklah mudah. menambahkan data dan fungsi baru.
Sebagian besar fungsi menggunakan data Di OOP, data tidak dapat berpindah dengan mudah
7 Global untuk berbagi yang dapat diakses secara dari satu fungsi ke fungsi lainnya, data dapat
bebas dari satu fungsi ke fungsi lainnya dalam disimpan publik atau pribadi sehingga kami dapat
sistem.
Itu tidak memiliki cara yang tepat untuk mengontrol akses data.
OOP menyediakan Penyembunyian Data sehingga
8
menyembunyikan data sehingga kurang memberikan keamanan lebih .
aman . Di OOP, kelebihan muatan dimungkinkan dalam
9 Overload tidak mungkin. bentuk Kelebihan Fungsi dan Kelebihan Beban
Operator.
Contoh Prosedur Berorientasi
Contoh Pemrograman Berorientasi Objek adalah :
10 Pemrograman adalah : C, VB, FORTRAN, C++, JAVA, VB.NET, C#.NET.
Pascal.

Prinsip (atau fitur) pemrograman berorientasi objek:


1. Enkapsulasi
2. Abstraksi data
3. Polimorfisme
4. Warisan
5. Pengikatan dinamis
6. Pesan lewat
Enkapsulasi: Pembungkusan data dan fungsi bersama sebagai satu kesatuan dikenal sebagai enkapsulasi. Secara
default, data tidak dapat diakses ke dunia luar dan hanya dapat diakses melalui fungsi yang dibungkus dalam
kelas. pencegahan akses langsung data oleh program disebut penyembunyian data atau penyembunyian informasi

Abstraksi data :
Abstraksi mengacu pada tindakan merepresentasikan fitur-fitur penting tanpa menyertakan
detail atau penjelasan latar belakang. Kelas menggunakan konsep abstraksi dan didefinisikan sebagai daftar
atribut seperti ukuran, berat, biaya dan fungsi untuk beroperasi pada atribut tersebut. Mereka merangkum semua
sifat penting dari objek yang akan dibuat. Atribut disebut sebagai anggota data karena mereka menyimpan data
dan fungsi yang beroperasi pada data ini disebut sebagai fungsi anggota.
Class menggunakan konsep abstraksi data sehingga disebut abstract data type (ADT)

Polimorfisme: Polimorfisme berasal dari kata Yunani "poli" dan "morfisme". "poli" berarti banyak dan
"morfisme" berarti bentuk yaitu. banyak bentuk. Polimorfisme berarti kemampuan untuk mengambil lebih dari
satu bentuk. Misalnya, suatu operasi memiliki perilaku yang berbeda dalam kasus yang berbeda. Perilaku
tergantung pada jenis data yang digunakan dalam operasi.
Berbagai cara untuk mencapai polimorfisme dalam program C++:
1) Overloading fungsi 2) Overloading operator
#termasuk<iostream>
menggunakan ruang nama
std; int main() { int a=4; a=a<<2;
cout<<”a=”<<a<<endl;
kembali 0;
}

Warisan: Warisan adalah proses di mana satu objek dapat memperoleh properti dari objek lain.
Warisan adalah konsep OOP yang paling menjanjikan, yang membantu mewujudkan tujuan membangun
perangkat lunak dari bagian yang dapat digunakan kembali, daripada mengkodekan setiap sistem secara manual
dari awal. Pewarisan tidak hanya mendukung penggunaan kembali di seluruh sistem, tetapi juga secara langsung
memfasilitasi ekstensibilitas dalam suatu sistem. Pewarisan digabungkan dengan polimorfisme dan pengikatan
dinamis meminimalkan jumlah kode yang ada untuk dimodifikasi sambil meningkatkan sistem.
Ketika anak kelas mewarisi induk kelas, anak kelas disebut sebagai kelas turunan (sub kelas) dan kelas
induk sebagai kelas dasar (kelas super). Dalam hal ini, anak kelas memiliki dua bagian: bagian turunan dan
bagian inkremental. Bagian turunan diwariskan dari induk kelas. Bagian inkremental adalah kode baru yang
ditulis khusus untuk anak kelas.
Pengikatan dinamis:
Pengikatan mengacu pada penautan panggilan prosedur ke kode yang akan dieksekusi sebagai respons
terhadap panggilan. Pengikatan dinamis (atau pengikatan terlambat) berarti kode yang terkait dengan panggilan
prosedur yang diberikan tidak diketahui hingga waktu panggilan pada waktu berjalan.

Pengiriman pesan:
Program berorientasi objek terdiri dari sekumpulan objek yang saling berkomunikasi.
Objek berkomunikasi satu sama lain dengan mengirim dan menerima informasi.
Pesan untuk objek adalah permintaan untuk eksekusi prosedur dan oleh karena itu memanggil fungsi yang
dipanggil untuk objek dan menghasilkan hasil

Manfaat Pemrograman Berorientasi Objek (OOP)


> , ........................... . . , , ,, Reusability: Dalam program OOP fungsi dan modul yang ditulis oleh pengguna dapat digunakan
kembali oleh pengguna lain tanpa modifikasi apa pun.
Warisan : Melalui ini kita dapat menghilangkan kode yang berlebihan dan memperluas penggunaan kelas yang ada.
Penyembunyian Data: Pemrogram dapat menyembunyikan data dan fungsi dalam suatu kelas dari kelas lain. Ini membantu
programmer untuk membangun program yang aman.
Mengurangi kompleksitas masalah: Masalah yang diberikan dapat dilihat sebagai kumpulan objek yang berbeda. Setiap
objek bertanggung jawab atas tugas tertentu. Masalahnya diselesaikan dengan menghubungkan objek. Teknik ini
mengurangi kompleksitas desain program.

Mudah Dipelihara dan Ditingkatkan : OOP memudahkan untuk memelihara dan memodifikasi kode yang ada
karena objek baru dapat dibuat dengan perbedaan kecil dari yang sudah ada. Kompleksitas perangkat lunak dapat
dengan mudah dikelola.
Message Passing: Teknik komunikasi pesan antar objek membuat antarmuka dengan sistem eksternal lebih mudah.

Modifiability: mudah untuk membuat perubahan kecil dalam representasi data atau prosedur dalam
program OO. Perubahan di dalam kelas tidak memengaruhi bagian lain dari suatu program, karena satu-
satunya antarmuka publik yang dimiliki dunia luar ke kelas adalah melalui penggunaan metode.

STRUKTUR DASAR BAHASA C++ : Program yang ditulis dalam bahasa C++ mengikuti struktur dasar ini.
Urutan bagian harus seperti pada struktur dasar. Program AC harus memiliki satu atau lebih bagian tetapi urutan
bagian harus diikuti.
1. bagian Dokumentasi
2. Bagian menghubungkan
3. Bagian definisi
4. Bagian deklarasi global & deklarasi kelas
5. Definisi fungsi anggota
6. Fungsi utama
bagian utama() {
Bagian deklarasi Bagian yang dapat dieksekusi
1. BAGIAN DOKUMENTASI : didahulukan dan digunakan untuk mendokumentasikan penggunaan
logika atau alasan dalam program Anda. Ini dapat digunakan untuk menulis detail tujuan, pengembang, dan
logika program. Dokumentasi dilakukan dalam bahasa C dengan /* dan */ . Apa pun yang tertulis di antara
keduanya disebut komentar.
2. LINKING SECTION : Bagian ini memberi tahu kompiler untuk menautkan kemunculan kata
kunci atau fungsi tertentu dalam program Anda ke file header yang ditentukan di bagian ini.
misalnya # sertakan<iostream>
menggunakan namespace std;
direktif menyebabkan preprosesor menambahkan konten file iostream ke program. Ini berisi deklarasi untuk cout dan cin.
>
cout adalah objek standar yang mewakili aliran output standar. Operator << adalah sebuah
operator penyisipan, menyebabkan string dalam tanda kutip ganda ditampilkan di layar.
Pernyataan cin>>n; adalah pernyataan input dan menyebabkan program menunggu pengguna mengetikkan angka.
Angka yang dikunci ditempatkan pada variabel "n". Pengidentifikasi cin adalah objek yang telah ditentukan
sebelumnya dalam C++ yang sesuai dengan aliran input standar. Operator >> dikenal sebagai operator ekstraksi.
Itu mengekstrak nilai dari keyboard dan menugaskannya ke variabel nilai di sebelah kanannya.

3. BAGIAN DEFINISI : Digunakan untuk mendeklarasikan beberapa konstanta dan


menetapkannya
nilai. misalnya #define MAX 25
Di sini #define adalah direktif kompiler yang memberi tahu kompiler setiap kali MAX ditemukan
dalam program, ganti dengan 25.
4. BAGIAN DEKLARASI GLOBAL : Di sini variabel dan definisi kelas yang digunakan di seluruh
program (termasuk fungsi utama dan lainnya) dideklarasikan sehingga menjadikannya global (yaitu dapat diakses
oleh semua bagian program). CLASS adalah kumpulan data dan fungsi yang bertindak atau memanipulasi data.
Komponen data kelas disebut anggota data dan komponen fungsi kelas disebut fungsi anggota
Kelas ca juga disebut sebagai cetak biru atau prototipe yang mendefinisikan variabel atau fungsi umum
untuk semua objek dari jenis tertentu. Ini adalah tipe data yang ditentukan pengguna

misalnya

int saya; // deklarasi ini dilakukan di luar dan sebelum main()

5. SUB PROGRAM ATAU FUNGSI BAGIAN : Ini memiliki semua sub program atau fungsi yang
dibutuhkan program kita.

tampilan kosong()
{
cout<<”C++ lebih baik dari C”;
}
PROGRAM 'C++' SEDERHANA:
#termasuk<iostream>
menggunakan namespace std;
tampilan kosong()
{
cout<<”C++ lebih baik dari C”;
}
int utama()
{
menampilkan()
kembali 0;
}

6. BAGIAN FUNGSI UTAMA : Ini memberi tahu kompiler tempat memulai eksekusi dari main()
{
titik dari eksekusi dimulai
}
fungsi utama memiliki dua bagian
1. bagian deklarasi : Dalam hal ini variabel dan tipe datanya dideklarasikan.
2. Bagian yang dapat dieksekusi atau bagian instruksi : Ini memiliki bagian dari program yang benar-
benar melakukan tugas yang kita butuhkan.

ruang nama:
namespace digunakan untuk menentukan ruang lingkup yang dapat menampung pengidentifikasi
global.
ex: -namespace scope untuk pustaka standar c++.
Kelas, fungsi, dan templat dideklarasikan di dalam namespace bernama
std menggunakan namespace std;-->direktif dapat digunakan.

ruang nama yang ditentukan pengguna:


sintaks untuk mendefinisikan ruang nama adalah

namespace namespace_name
{
//deklarasi variabel.fungsi,kelas dll...
}
mantan:
#termasuk<iostream>
menggunakan namespace std;
sampel ruang nama
{`
int m;
tampilan batal (int n)
{
cout<<"di namespace N="<<n<<endl;
}
}

menggunakan sampel namespace;


int utama()
{
int a=5;
m=100;
tampilan(200);
cout<<"M dalam ruang nama sampel:"<<sample::m;
kembali 0;}

#termasuk<iostream>
Arahan ini menyebabkan preprosesor menambahkan konten file iostream ke program. beberapa versi lama
C++ menggunakan iostream.h .jika kompiler tidak mendukung ANSI (lembaga standar negara amerika)
C++ maka gunakan file header iostream.h
JENIS DATA:
Tipe data digunakan untuk menunjukkan tipe nilai data yang disimpan dalam variabel. Semua kompiler C
mendukung berbagai tipe data. Jenis data yang beragam ini memungkinkan pemrogram untuk memilih
jenis yang sesuai dengan kebutuhan aplikasi maupun mesin. ANSI C mendukung kelas data berikut

Tipe data primer:


1.tipe data bilangan bulat
2 tipe data .karakter
3 tipe data .float point
4 Tipe data .Boolean
5.batal tipe data
tipe data bilangan bulat: -
Tipe data ini digunakan untuk menyimpan bilangan bulat. Angka-angka ini tidak mengandung bagian desimal. Ukuran
bilangan bulat tergantung pada panjang dunia mesin (16-bit atau 32-bit). Pada mesin 16-bit, kisaran nilai integer adalah -
32.768 hingga +32.767. Variabel bilangan bulat dideklarasikan dengan kata kunci int. C memberikan kontrol atas rentang
nilai integer dan ruang penyimpanan yang ditempati oleh nilai-nilai ini melalui tipe data: short int, int, long int dalam bentuk
bertanda tangan dan tidak bertanda tangan.

Bilangan bulat yang ditandatangani: (mesin 16-bit):


Bilangan bulat yang ditandatangani menggunakan 1 bit untuk tanda dan 15 bit untuk besarnya angka
Bilangan bulat yang ditandatangani menggunakan 1 bit untuk tanda dan 15 bit untuk besarnya angka. (-2 15
hingga +215-1).
Contoh: tx=100;
0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0

, । । .......
Ditandatangani sedikit Besarnya
MSB (bit paling signifikan)
100(10)=00000000001100100(2)
Representasi bilangan negatif :

-100(10)=1111111110011100(2)

15 14 13 12 11 10 9 8 7 -1*2 +1*2 +1*2 +1*2 +1*2 +1*2 +1*2 +1*2


+1*2 +
6 5 4 3 2 1 0
0*2 +0*2 +1*2 +1*2 +1*2 +0*2 +0*2
= -32768+16384+8192+4096+2048+1024+512+256+128+0+0+26+8+4+0+0 =-
100(10)
CATATAN: Signed bit (MSB BIT) : 0 mewakili bilangan bulat positif, 1 mewakili bilangan negatif

Bilangan bulat yang tidak ditandatangani : Bilangan bulat yang tidak ditandatangani menggunakan semua 16
bit untuk menyimpan besarnya. Nomor toko tidak memiliki tanda & Kualifikasi ukuran dan rentang tipe data
bilangan bulat pada mesin 16-bit dan ditunjukkan pada tabel:
DIBUTUHKAN MEMORI
JANGKAUAN
ATAU UKURAN PENYIMPANAN SPESIFIKA
TIPE DATA DALAM
TURBO CBYTES
GCC/ COMPILER DI TURBO C (16 BIT) GCC SI FORMAT
LINUX (32 BIT)
(16 BIT) (32 BIT)
int pendek
-32768
atau -32768
2 2 Ke 32767 %hd
Ke 32767 (-2 ke
ditandatangani +2 -1) (-2 ke +2 -1)
pendek int
int pendek
0 hingga 65535 (0 0 hingga 65535 (0 hingga
atau hingga +2 -1) +2 -1)
ditandatangani int 2 2 %hu
pendek

ditandatangani int -32768 -2.147.843.648 hingga


2 4
Ke 32767 (-2 ke 2.147.843.647 (-2 hingga
atau int %d atau %i
+2 -1) +2 -1)
int yang tidak 0 hingga 65535 0 hingga 4.294.967.295 (0
ditandatangani
2 4 (0 hingga +2 -1) hingga2 -1 ) %u
long int atau int -2.147.843.648 -2.147.843.648
panjang yang hingga hingga
ditandatangani 4 4 2,147,843,647 2,147,843,647 %ld
31 31 (-2 hingga +2
(-2 hingga +2 -1)
int panjang yang tidak 0 hingga 4.294.967.295 -1)
0 hingga 4.294.967.295 (0
ditandatangani 4 4 %lu
(0 sampai2 -1) hingga2 -1 )
panjang panjang int -9223372036854775808
atau
Tidak Ke
ditandatangani lama didukung 8 ------- 9223372036854775807 (-2 %Ld
63
int hingga +2 63 -1)

Tipe data karakter : ( char )


Karakter tunggal dapat didefinisikan sebagai tipe data karakter. Tipe data karakter menempati satu byte memori
untuk penyimpanan karakter. Kualifikasi yang ditandatangani atau tidak ditandatangani dapat diterapkan pada
tipe data karakter. char adalah kata kunci yang digunakan untuk mendeklarasikan variabel
ukuran dan jangkauan tipe data karakter pada mesin 16 bit atau 32 bit dapat ditunjukkan di bawah ini

Tipe data MEMORY DIPERLUKAN JANGKAUAN SPESIFIKASI FORMAT


ATAU UKURAN
char atau karakter yang PENYIMPANAN (dalam byte) -128 hingga 127(-2 7
1 %C
ditandatangani sampai 2 -1)
Karakter bertanda tangan 0 hingga 256 (0 hingga 2
1 %C
yang tidak ditandatangani -1)

Jenis Titik Mengambang:

Angka floating point mewakili bilangan real dengan presisi 6 digit menempati 4 byte memori.
Variabel floating point dideklarasikan dengan kata kunci float.
Tipe data floating point ganda menempati 8 byte memori memberikan 14 digit presisi. Ini juga dikenal sebagai
angka presisi ganda. Variabel yang dideklarasikan dengan kata kunci double long double mengacu pada tipe data
floating point yang seringkali lebih tepat daripada presisi ganda.
Ukuran dan jangkauan tipe data floating point ditunjukkan pada tabel:
Tipe data Ukuran (memori) Jangkauan penentu format
(kata kunci)
Mengambang 32 bit (4 byte) 3.4E-38t03.4E+38 %F
Dobel 64 bit (8 byte) 1.7E-308 hingga I.7E +308 %jika
ganda panjang 80 bit (10 byte) 3.4E-4932 hingga Lf
B tipe data oolean: - 1.1E+4932
Tipe data boolean atau logika adalah tipe data yang memiliki dua nilai (biasanya dilambangkan benar dan
salah), dimaksudkan untuk mewakili nilai kebenaran logika dan aljabar Boolean. Dinamai setelah George Boole,
yang pertama kali mendefinisikan sistem logika aljabar pada pertengahan abad ke-19. Tipe data Boolean adalah
hasil utama dari pernyataan bersyarat, yang memungkinkan tindakan yang berbeda dan mengubah aliran kontrol
tergantung pada apakah kondisi Boolean yang ditentukan pemrogram mengevaluasi ke benar atau salah.
C99 menambahkan tipe Boolean (true/false) yang didefinisikan di <stdbool.h> variabel Boolean header
didefinisikan oleh kata kkey bool; Mantan:

bool b;
di mana b adalah variabel yang dapat menyimpan true(1) of false (0)

Tipe kosong
Tipe void tidak memiliki nilai . Ini biasanya digunakan untuk menentukan jenis pengembalian fungsi. Jenis fungsi dikatakan
batal ketika tidak mengembalikan nilai apa pun ke fungsi pemanggil. Ini juga digunakan untuk mendeklarasikan pointer
tujuan umum yang disebut void pointer.
Tipe data turunan.
Tipe data turunan adalah Arrays , penunjuk dan referensi adalah contoh untuk tipe data turunan.
Tipe data yang ditentukan pengguna:
mereka Tipe data yang ditentukan oleh pengguna dikenal sebagai tipe data yang ditentukan pengguna.
Mereka adalah struktur, persatuan, kelas dan pencacahan

Token C++
IDENTIFIERS: Identifiers adalah nama yang diberikan untuk berbagai elemen program seperti variabel, fungsi
dan array. Ini adalah nama yang ditentukan pengguna yang terdiri dari urutan huruf dan angka.
Aturan untuk mendeklarasikan pengidentifikasi:
Karakter pertama harus alfabet atau garis bawah.
> Itu harus terdiri dari hanya huruf, angka dan garis bawah.
Pengidentifikasi dapat memiliki panjang berapa pun tetapi hanya 31 karakter pertama yang signifikan.
> Itu tidak boleh berisi ruang putih atau ruang kosong.
Kita tidak boleh menggunakan kata kunci sebagai pengidentifikasi.
> Huruf besar dan kecil berbeda.
Contoh: ab Ab aB AB diperlakukan berbeda
Contoh pengidentifikasi yang valid:
a, x, n, num, SUM, fakta, grand_total, sum_of_digits, sum1

Contoh pengidentifikasi tidak valid : $ jumlah, ³ num ´ , grand - total, jumlah digit, 4num.
$ jumlah : Karakter khusus tidak diizinkan
grand - total : tanda hubung tidak diizinkan.
jumlah digit : spasi kosong di antara kata-kata tidak diperbolehkan.
4num : tidak boleh dimulai dengan angka (karakter pertama harus berupa huruf atau garis bawah

Catatan: Beberapa kompiler C hanya mengenali 8 karakter pertama saja; karena itu mereka tidak dapat
membedakan pengidentifikasi dengan kata-kata yang panjangnya lebih dari delapan karakter.

Variabel: Lokasi memori bernama disebut variabel.


ATAU
Ini adalah pengidentifikasi yang digunakan untuk menyimpan nilai tipe data tertentu dalam
memori.
Karena nama variabel adalah pengidentifikasi, kami menggunakan aturan berikut yang sama dengan
pengidentifikasi
Aturan untuk mendeklarasikan nama
Variabel:
> Karakter pertama harus alfabet atau garis bawah.
Itu harus terdiri dari hanya huruf, angka dan garis bawah.
> Pengidentifikasi dapat memiliki panjang berapa pun tetapi hanya 31 karakter pertama yang signifikan.
Itu tidak boleh berisi ruang putih atau ruang kosong.

> Kita tidak boleh menggunakan kata kunci sebagai pengidentifikasi.


Huruf besar dan kecil berbeda.
Nama variabel harus unik dalam lingkup yang diberikan
> Ex:int a,b,a;//di valid
Int a,b;// valid

Deklarasi variabel: Deklarasi variabel memberikan nama untuk lokasi memori dan ukurannya dan
menentukan rentang nilai yang dapat disimpan di lokasi
Sintaksis:
tersebut.
nama variabel tipe data;
Mantan: 10 2000
int a=10;
mengapung x=2.3; X 2.300000 5000
KATA KUNCI :
Ada kata-kata tertentu, yang disebut kata kunci (reserved words) yang memiliki arti yang telah
ditentukan dalam bahasa „C++ ‟ . Kata kunci ini hanya untuk digunakan untuk tujuan yang dimaksudkan dan
bukan sebagai pengidentifikasi.
Tabel berikut menunjukkan kata kunci 'C++' standar
mobil merusak kasus arang const melanjutkan
bawaan Mengerjakan dobel kalau tidak enum eksternal
mengambang untuk pergi ke jika int panjang
daftar kembali pendek tertanda ukuran dari statis
struct mengalihkan typedef Persatuan tidak ruang kosong
tidak stabil ketika kelas teman ditandatangani
baru menghapus
ini publik pribadi terlindung Di barisan mencoba
melemparkan menangkap templat

KONSTAN:
Konstanta mengacu pada nilai yang tidak berubah selama eksekusi program.
Konstanta dapat dibagi menjadi dua kategori utama:
1. Konstanta primer :
a) Konstanta numerik
konstanta bilangan bulat.
Titik-mengambang (nyata)
konstanta. b) Konstanta karakter
Konstanta karakter tunggal Konstanta string
2. Konstanta sekunder :
Konstanta pencacahan.
konstanta simbolik.
Array, serikat pekerja, dll.
Aturan untuk mendeklarasikan konstanta:
1 .Koma dan spasi kosong tidak diizinkan dalam konstanta.
2 .Konstanta dapat didahului dengan tanda minus (-) jika diperlukan.
3 .Nilai konstanta harus berada dalam batas minimum tipe data yang ditentukan.
Konstanta bilangan bulat : Konstanta bilangan bulat adalah bilangan bernilai bilangan bulat. Ini terdiri dari
urutan angka. Konstanta bilangan bulat dapat ditulis dalam tiga sistem bilangan yang berbeda:
1 .Integer desimal (basis 10).
2 .Octal bilangan bulat (basis 8).
3 .Heksadesimal (basis 16).
Konstanta bilangan bulat desimal : Ini terdiri dari kumpulan angka, 0 hingga 9.
Deklarasi yang valid: 0, 124, -56, + 67, 4567 dll.
Deklarasi tidak valid: $245, 2,34, 34 345, 075.
23.345,00. itu juga merupakan deklarasi yang tidak valid.
Catatan: Spasi, koma, karakter, simbol khusus tidak diperbolehkan di antara digit

Mereka dapat didahului dengan tanda + atau ± opsional.

Bilangan bulat oktal : Ini terdiri dari kumpulan angka, 0 hingga 7.


Mis: 037, 0, 0765, 05557 dll. (representasi yang valid)
Ini adalah urutan angka yang diawali dengan 0.
Contoh: Representasi yang tidak valid
0394: digit 9 tidak diizinkan (hanya digit 0 hingga 7)
235 : tidak dimulai dengan 0. (Bilangan depan harus 0).

Bilangan bulat heksadesimal: Terdiri dari kumpulan angka, 0 hingga 9 dan huruf A, B, C, D, E, dan F. Bilangan
bulat heksadesimal adalah urutan angka yang diawali dengan 0x atau 0X. Kita juga dapat menggunakan a sampai
f daripada A ke F.
Contoh: 0X2, 0x9F, 0Xbcd, 0x0, 0x1. (Representasi yang valid)
Mis: Representasi tidak valid: 0af, 0xb3g, 0Xgh.
0af: tidak dimulai dengan 0x atau 0X.
0xb3g, 0Xgh: karakter ilegal seperti g, h. (hanya a sampai f yang diperbolehkan)

Magnitudo (nilai maksimum) konstanta bilangan bulat dapat berkisar dari nol hingga beberapa nilai maksimum
yang bervariasi dari satu komputer ke komputer lainnya.
Nilai maksimum tipikal untuk sebagian besar komputer pribadi adalah: (mesin 16-bit)
Konstanta bilangan bulat desimal: 32767 (215-1)
Konstanta bilangan bulat oktal: 077777
Konstanta bilangan bulat heksadesimal: 0X7FFF
Catatan: Nilai terbesar yang dapat disimpan bergantung pada mesin.

Konstanta floating point atau konstanta Real : Bilangan dengan bagian pecahan disebut konstanta real.
Ini adalah angka dengan basis 10 yang berisi bagian desimal atau eksponen (atau keduanya). Representasi:
Angka-angka ini dapat direpresentasikan dalam notasi desimal atau notasi eksponen (notasi ilmiah).
Notasi desimal: 1234.56, 75.098, 0.0002, -0.00674 (notasi valid)
Eksponen atau notasi ilmiah:
Bentuk umum: Mantissa e eksponen
Mantissa: Ini adalah bilangan real yang dinyatakan dalam notasi desimal atau notasi bilangan bulat.
Eksponen: Ini adalah bilangan bulat dengan tanda plus (+) atau minus (-) opsional.
E atau e : Huruf yang memisahkan mantissa dan bagian desimal.
Contoh: (Notasi yang valid)
3
1,23456 E+ 3 (1,23456×10 )
1
7.5098 e+ 1 (7.5098×10 )
-4
2 E- 4 (2×10 )
Notasi eksponensial ini berguna untuk merepresentasikan angka yang sangat besar atau sangat besar
kecil. Contoh: 0,00000000987 setara dengan 9,87e-9

Konstanta karakter:-
Konstanta karakter tunggal : Ini adalah karakter (atau simbol atau angka apa pun) yang diapit dalam tanda kutip tunggal.
Contoh: „a‟ „1‟ „*‟
Setiap konstanta Karakter memiliki nilai integer yang dikenal sebagai nilai ASCII

ASCII: - ASCII adalah singkatan dari American Standard Code for Information Interchange. Diucapkan ask-ee, ASCII
adalah kode untuk merepresentasikan karakter bahasa Inggris sebagai angka, dengan setiap huruf diberi nomor dari 0 hingga
255. Komputer hanya dapat memahami angka, jadi kode ASCII adalah representasi numerik dari karakter seperti 'a' atau '@'
atau
tindakan semacam itu. Kode SCII mewakili teks di komputer, peralatan komunikasi, dan perangkat lain yang menggunakan
teks. Sebagian besar skema pengkodean karakter modern didasarkan pada ASCII, meskipun mereka mendukung banyak
karakter tambahan. Di bawah ini adalah tabel karakter ASCII dan ini termasuk deskripsi dari 32 karakter non-cetak pertama.
Konstanta string atau literal string:

Konstanta string adalah urutan nol atau lebih karakter yang diapit oleh tanda kutip ganda.
Contoh:
“MRCET” “12345” “*)(&%”
Escape Sequences atau Konstanta Karakter Backslash
Bahasa C mendukung beberapa karakter yang tidak dapat dicetak, serta garis miring terbalik ( \ ) yang dapat
diekspresikan
sebagai escape sequence. Urutan melarikan diri selalu dimulai dengan garis miring terbalik diikuti oleh satu atau
lebih karakter khusus.
Misalnya, karakter baris baru dilambangkan dengan "\n" atau endl
Ini digunakan dalam memformat layar output , yaitu escape sequence digunakan dalam
fungsi keluaran. Beberapa urutan pelarian diberikan di bawah ini:

Urutan pelarian Karakter


"A' peringatan terdengar
"B' menghapus
"F bentuk pakan
"N' garis baru
“e' tab horisontal
tab vertikal
kutipan tunggal
kutipan ganda
«\23 tanda tanya
“W Garis miring terbalik
TIDAK' Batal
OPERATOR DAN EKSPRESI
Operator adalah simbol yang mewakili operasi tertentu yang dapat dilakukan pada data. Operan adalah objek tempat operasi
dilakukan.
Dengan menggabungkan operator dan operan kita membentuk sebuah ekspresi . Ekspresi adalah urutan operan dan operator
yang direduksi menjadi satu nilai.

Operator C dapat diklasifikasikan sebagai


1. operator aritmatika
2. Operator relasional
3. Operator logis
4. Operator penugasan
5. Operator Increment atau Decrement
6. Operator bersyarat
7. Operator yang sedikit bijak
8. operator unary
9. Operator khusus
10. Operator tambahan di c++

1. OPERATOR Aritmatika : Semua operator aritmatika dasar ada di operator C arti


+ menambahkan
- kurangi
* perkalian
/ divisi
% divisi modulo (sisa)
Operasi aritmatika yang hanya melibatkan operan nyata (atau operan bilangan bulat) disebut aritmatika
nyata (atau aritmatika bilangan bulat). Jika kombinasi antara aritmatika dan real disebut aritmatika mode
campuran.
/*Program C pada Ekspresi Aritmetika Integer*/
#termasuk<iostraem.h>
batal utama()
{
int a, b;
cout<"Masukkan sembarang dua bilangan bulat";
cin>>a>>b;
cout<<"a+b"<< a+b;
cout<<"ab"<<ab;
cout<<"a*b"<< a*b;
cout<<"a/b"<< a/b;
cout<<"a%b"<<a%b;
}

KELUARAN:
a+b=23
ab=17
a*b=60
a/b=6
a%b=2

2. OPERATOR RELASI : Kita sering membandingkan dua besaran dan bergantung pada hubungannya
mengambil keputusan tertentu untuk perbandingan itu kita menggunakan operator relasional.
operator arti

> kurang dari


> lebih besar dari
> = kurang dari atau sama dengan
> = lebih besar atau sama dengan
== adalah sama dengan
!= tidak sama dengan
/* program C pada operator relasional*/
#sertakan<iostream.h>
batal utama()
{
int a,b;
clrscr();
cout<<"Masukkan nilai a,b :";
cin>>a>>b;
cout<<"a>b"<< a>b;
cout<<"a>=b"<< a>=b;
cout<<"a<b"<< a<b;
cout<<"a<=b"<< a<=b;
cout<<"a==b"<< a==b;
cout<<"a!=b"<< a!=b;
}
KELUARAN:
Masukkan nilai a, b: 5 9
a>b: 0 //salah
a<b: 1 //benar
a>=a: 1 //benar
a<=b: 1 //benar
a==b: 0 //salah
a!=b: 1 //benar
3 .OPERATOR LOGIS:
Data Logis: Sepotong data disebut logis jika menyampaikan gagasan benar atau salah. Di C++ kami menggunakan tipe data
int untuk mewakili data logis. Jika nilai datanya nol, itu dianggap salah. Jika bukan nol (1 atau bilangan bulat selain 0)
dianggap benar. C++ memiliki tiga operator logika untuk menggabungkan nilai logika dan membuat nilai logika baru:
Tabel kebenaran untuk AND (&&) dan OR (operator ID : X Y X&&Y X/Y
0 0 0 0
1 tabel ruth untuk operator NO I (!): 0 1 0 1
X 'X
0 1 1 0 0 1
1 0 1 1 SAYA 1
Catatan: Program di bawah ini berfungsi dalam kompiler yang mendukung standar C99
#sertakan<iostream.h>
#termasuk<stdbool.h>
int utama()
{
bool a,b;
/*logis dan*/
a=0;b=0;
cout<< " a&&b "<< a&&b<<endl;
a=0;b=1;
cout<< " a&&b "<< a&&b<<endl;
a=1;b=0;
cout<< " a&&b "<< a&&b<<endl;
a=1;b=1;
cout<< " a&&b "<< a&&b<<endl;
/*logis atau*/
a=0;b=0;
cout<< " a||b "<< a||b<<endl;
a=0;b=1;
cout<< " a||b "<< a||b<<endl;
a=1;b=0;
cout<< " a||b "<< a||b<<endl;
a=1;b=1;
cout<< " a||b "<< a||b<<endl;
/*tidak logis*/
a=0;
cout<< " a||b "<< a||b<<endl;
a=1;
cout<< " a||b "<< a||b<<endl;
kembali 0;
}

KELUARAN: 0&&0=0
0&&1=0
1&&0=0
1&&1=1
0||0=0
0||1=1
1||0=1 1||1=1 !0 =1 !1 =0

4 .OPERATOR PENUGASAN:
Ekspresi penugasan mengevaluasi operan di sisi kanan operator (=) dan menempatkan nilainya di variabel
di sebelah kiri.
Catatan: Operan kiri dalam ekspresi penugasan harus berupa variabel tunggal.
Ada dua bentuk penugasan:
• Tugas sederhana
• Tugas majemuk

Tugas sederhana :
Dalam ekspresi aljabar kami menemukan ekspresi ini.
Contoh: a=5; a=a+1; a=b+1;
Di sini, operan sisi kiri harus berupa variabel tetapi bukan konstanta. Variabel sisi kiri harus dapat
menerima nilai ekspresi. Jika operan kiri tidak dapat menerima nilai dan kami menetapkannya, kami
mendapatkan kesalahan kompilasi.

Tugas Majemuk:
Tugas majemuk adalah notasi steno untuk tugas sederhana. Itu mengharuskan operan kiri diulangi sebagai
bagian dari ekspresi kanan. Sintaks: operator variabel+=nilai

Mantan:
A+=1; itu setara dengan A=A+1;

Keuntungan menggunakan operator penugasan steno:


1. Apa yang muncul di sisi kiri tidak perlu diulang dan karena itu menjadi lebih mudah untuk ditulis.
2. Pernyataan lebih ringkas dan lebih mudah dibaca.
3. Pernyataan itu lebih efisien.

Operator ++ menambahkan satu ke operannya dimana operator - - mengurangi satu dari operannya. Operator ini adalah
operator unary dan mengambil bentuk berikut:
Operator Keterangan
Operator kenaikan dan penurunan dapat mendahului atau
mengikuti operan. -—a Pra-kenaikan
Peningkatan/Penurunan Postfix :( a++/a--) a++ Pasca-kenaikan
Dalam kenaikan postfix (Decrement) nilainya bertambah -A Pra-penurunan
(dikurangi) satu per satu. Jadi a++ memiliki efek yang A- Pasca penurunan
sama dengan
Beberapa operator penugasan steno yang umum digunakan ditunjukkan pada tabel berikut:
Pernyataan dengan operator penugasan Pernyataan dengan operator steno
sederhana
a-
a=a+l =1
a=al a-=l
a=a*l a *=i
a=a/ 1 a-1
a=a% 1 a%=l
a=a*(nl) a*=n+1
5. PENINGKATAN (++) DAN PENURUNAN (--) OPERATOR:
a=a+1; a--memiliki efek yang sama dengan a=a-1.
Perbedaan antara a++ dan a+1 adalah, jika ++ setelah operan, kenaikan dilakukan setelah ekspresi dievaluasi.
Operan dalam ekspresi postfix harus berupa variabel.
Contoh 1:
int a=5;
B=a++; Di sini nilai B adalah 5. nilai a adalah 6.
Contoh2:
int x=4; y=x--; Di sini nilai y adalah 4, nilai x adalah 3
Awalan Penambahan/Penurunan (++a/ --a)
Dalam penambahan awalan (penurunan) efek terjadi sebelum ekspresi yang berisi operator dievaluasi. Ini adalah kebalikan
dari operasi postfix. ++a memiliki efek yang sama dengan a=a+1.
--a memiliki efek yang sama dengan a=a-1.
Contoh: int b=4;
A= ++b;
Dalam hal ini nilai b adalah 5 dan A adalah 5.
Efek dari penambahan postfix dan prefix adalah sama: variabel diinkremen oleh
1. Tapi mereka berperilaku berbeda saat digunakan dalam ekspresi seperti yang ditunjukkan di atas. Eksekusi operator ini
cepat jika dibandingkan dengan pernyataan penugasan yang setara.

#sertakan<iostream.h>
int utama()
{
int a=1;
int b=5;
++a;
cout<<"a="<<a<<endl;
--B;
cout<<"b="<<b<<endl;
cout<<"a="<<a++<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b--<<endl;
cout<<"b="<<b<<endl;
kembali 0;
}
a=2
b=4
a=2
a=3
b=4
b=3
6 .OPERATOR KONDISI ATAU OPERATOR TERNARY:

Operator ternary membutuhkan dua operan untuk beroperasi


Sintaksis:

#sertakan<iostream.h>
batal utama()
{
int a,b,c;
cout<<"Masukkan nilai a dan b :";
cin>>a>>b;
c=a>b?a:b;
cout<<"terbesar dari a dan b adalah "<<c;
}
Masukkan nilai a dan b:1
5

7 . OPERATOR BIT WISE : C mendukung operator khusus yang dikenal sebagai operator bitwise untuk
manipulasi data pada level bit. Mereka tidak diterapkan ke float atau double.
operator arti

& Sedikit demi sedikit DAN

^ Bitwise eksklusifATAU
<< pergeseran kiri
>> pergeseran kanan
~ pelengkap seseorang
Bitwise DAN operator (&)
Operator bitwise AND adalah operator biner yang membutuhkan dua operan integral (karakter atau integer). Itu melakukan
perbandingan bitwise seperti yang ditunjukkan di bawah ini:
Bit Operan Pertama Bit Operan Kedua Opel & Opel
0 0 0
0 1 0
1 0 0
1 1 1

Bitwise ATAU operator ( | )


Operator bitwise OR adalah operator biner yang membutuhkan dua operan integral (karakter atau bilangan
bulat). Itu melakukan perbandingan bitwise seperti yang ditunjukkan di bawah ini:

Bit Operan Pertama Bit Operan Kedua Opel | Opel


0 0 0
0 1 1
1 0 1
1 1 1

Bitwise EKSKLUSIF OR operator ( A )


Operator EKSKLUSIF OR bitwise adalah operator biner yang membutuhkan dua operan integral (karakter atau
bilangan bulat). Itu melakukan perbandingan bitwise seperti yang ditunjukkan di bawah ini:

Bit Operan Pertama Bit Operan Kedua Opel A Opel


0 0 0
0 1 1
1 0 1
1 1 0
Operator Pergeseran
Operator shift memindahkan bit ke kanan atau ke kiri. Ini adalah dua jenis: . •Bitwise menggeser operator kanan
. •Bitwise menggeser operator kiri
Pergeseran bitwise operator kanan
Ini adalah operator biner yang membutuhkan dua operan integral. Operan pertama adalah nilai yang akan digeser dan
operan kedua menentukan jumlah bit yang akan digeser. Ketika bit digeser ke kanan, bit di ujung paling kanan dihapus
dan nol disisipkan pada bit MSB.
#sertakan<iostream.h>
batal utama()
{
int x,geser;
cout<<"Masukan Angka :");
cin>>x;
cout<<”masukkan sekarang berkali-kali ke kanan shift: “;
cin>>geser;
cout<<”Sebelum Shift Kanan :”<<x;
x=x>>geser;
cout<<"Setelah geser kanan:"<<x;
}
Jalankan1:
Masukkan nomor:8
masuk sekarang berkali-kali ke kanan shift:1
Sebelum Pergeseran Kanan:8
Setelah shift kanan:4

Penjelasan: Angka yang dimasukkan melalui keyboard sebagai input adalah 8 dan angka binernya adalah 1 000.
...........................................................................................................
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
15 14 13 12 11 10 9 876543 21 0
Setelah eksekusi program, input data x akan digeser 2 bit ke kanan. Jawaban dalam bentuk biner adalah sebagai
berikut:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
15 14 13 12 11 10 9 876543 21 0

Operator shift kanan membagi angka yang diberikan dengan kekuatan 2. Jika kita menggeser bilangan biner dua
tempat ke kanan, kita membagi bilangan tersebut dengan 4 (2').

Pergeseran bitwise operator kiri

Ini adalah operator biner yang membutuhkan dua operan integral. Operan pertama adalah nilai yang akan
digeser dan operan kedua menentukan jumlah bit yang akan digeser ke kiri.
Saat bit bergeser ke kiri, bit di ujung paling kiri akan dihapus.

Contoh: int a=2;


a«=3;
Shift kiri adalah kebalikan dari operator shift kanan. Operator shift kiri mengalikan angka yang diberikan
dengan pangkat 2. Jika kita menggeser bilangan biner tiga tempat ke kiri, kita mengalikan bilangan tersebut
dengan 8 (2 3 ).
Pelengkap seseorang atau Bitwise NOT

Bitwise NOT, atau komplemen, adalah operasi unary yang melakukan negasi logis pada setiap bit.
membentuk komplemen satuan dari nilai biner yang diberikan. Angka yang tadinya 0 menjadi I, begitu pula
sebaliknya.
Mantan: BUKAN 0111 (desimal 7) = 1000 (desimal 8)
Dalam C, operator NOT bitwise adalah (tilde). Meja kebenaran:
Nilai ekspresi ~ Ekspresi
0 1
1 (bukan nol) 0
Catatan: Operator pelengkap (Bitwise NOT) berbeda dengan operator Logical NOT. Kami menggunakan
operator ini dalam proses encoding dan decoding.
8.5 OPERATOR KHUSUS
Operator ini yang tidak sesuai dengan klasifikasi di atas adalah ,(comma), sizeof, operator Pointer(& dan *) dan
operator pemilihan anggota (. dan ->). Operator koma digunakan untuk menautkan ekspresi terkait bersama-sama.
Operator SIZEOF:

Ini mengembalikan jumlah byte yang ditempati oleh operan. Operan dapat berupa variabel, konstanta (nilai
data) atau kualifikasi tipe data.
Contoh: int a. c, f, d;
c=ukurandari(a); di sini c=2, operator sizeof mengembalikan ukuran variabel a yang bertipe int f=sizeof(long
double); nilai f adalah 10 yang merupakan ukuran dari kualifikasi ganda tipe d=sizeof(23.345); nilai d adalah
4 yang merupakan ukuran nilai konstanta float

Operator sizeof biasanya digunakan untuk menentukan panjang array dan struktur. Ini juga digunakan untuk
mengalokasikan ruang secara dinamis ke variabel s selama eksekusi program.

Operator Koma (,)

Operator koma dapat digunakan untuk menautkan ekspresi ekspresi terkait yang dievaluasi dari kiri ke kanan
dan nilai dari ekspresi gabungan.
Contoh: a=(x=10, y=20, x+y);

Pertama berikan nilai 10 ke x, lalu berikan 20 ke y dan fina


Ini memiliki prioritas terendah di antara semua operator.
Kami menggunakan operator koma dalam pernyataan loop dan deklaratif dengan tipe yang sama.
Operator Keterangan
4- Unari plus
9.UNARY OPERATOR : operator yang - Minus unary
beroperasi pada operan tunggal disebut operator unary — Kenaikan
— Pengurangan
& Alamat
— Satu melengkapi
Ukuran dari Ukuran operator
Jenis Ketik pengecoran

Operator di c++: Semua operator bahasa c di atas juga berlaku di c++. Operator baru yang diperkenalkan di c++
adalah

Sno Operator Simbol


1. Operator resolusi lingkup
2. Pointer ke deklarator anggota ::*
3. Pointer ke operator anggota ->*,->
4. Pointer ke operator anggota .*
5. baru Operator pengalokasian memori
6. menghapus Operator pelepasan memori
7. endl Operator umpan baris
8. setw Operator lebar bidang
9. insersi <<
10. Ekstraksi >>

8.6 mengatasi Resolusi operator:


Lingkup: - Visibilitas atau ketersediaan variabel dalam suatu program disebut sebagai ruang lingkup. Ada dua
jenis ruang lingkup. i) Lingkup lokal ii) Lingkup global
Cakupan lokal: visibilitas variabel lokal ke fungsi yang dideklarasikan.
Lingkup global: visibilitas variabel ke semua fungsi
operator resolusi Lingkup program di “::” .
Ini digunakan untuk mengakses variabel global jika variabel yang sama dideklarasikan sebagai lokal
dan PROGRAM1.2 global: -
#sertakan<iostream.h>
int a=5;
batal utama()
{
int a=10;
cout<<"Lokal a="<<a<<endl;
cout<<"Global a="<<::a<<endl;
}
Keluaran yang diharapkan:
a lokal = 10
globala=5
Operator Dereferensi Anggota:-
1. Pointer ke deklarator anggota ::*
2. Pointer ke operator anggota ->*,->
3. Pointer ke operator anggota .*
Pointer ke deklarator anggota ::*
Operator ini digunakan untuk mendeklarasikan pointer ke anggota kelas #include<iostream.h>
sampel kelas
{publik:
int x;
};
int utama()
{ sampel; //obyek
int sampel ::*p;//deklerasi pointer s.*p=10; //benar
cout<<s.*p;
} Keluaran:10
2.Pointer ke operator anggota ->*
#include<iostream.h> contoh kelas
{
publik:
int x;
tampilan kosong()
{
cout<<"x="<<x<<endl;
}
};
int utama()
{
sampel; //obyek
sampel *ptr;
int contoh::*f=&sampel::x;
sx=10;
ptr=&s;
cout<<ptr->*f;
ptr->tampilan();
}

3. Penunjuk ke operator anggota .*


#sertakan<iostream.h>
sampel kelas
{
publik: int x;
};
int utama()
{
sampel; //obyek
int sampel ::*p;//deklarasi pointer
s.*p=10; //benar
cout<<s.*p;
}

Manipulator:
Manipulator adalah operator yang digunakan untuk memformat data yang akan ditampilkan di layar.
Manipulator yang paling umum digunakan adalah endl dan setw
endl:-itu digunakan dalam pernyataan keluaran dan menyisipkan umpan baris. Mirip dengan karakter baris
baru (“\n”)
contoh: cout<<”a=2”<<endl;
cout<”nama=matahari”<<endl;
Keluaran:
a=2
nama=matahari
setw:-
manipulator ini memungkinkan lebar tertentu untuk bidang yang akan dicetak di layar
dan secara default nilai yang tercetak benar. Fungsi ini tersedia di file header iomanip.h

#sertakan<iostream.h>
#termasuk<iomanip.h>
menggunakan namespace std;
int utama()
{
int s=123;
cout<<"s="<<setw(10)<<s ;
}
keluaran
s= 123
Operator penyisipan (<<) dan Ekstraksi (>>):
operator digunakan dengan objek keluaran dan masukan
mantan:
cout<<”Masukkan n”;
cin>>n

Pernyataan kontrol: - Alur eksekusi pernyataan dalam suatu program disebut sebagai kontrol. Pernyataan
kontrol adalah pernyataan yang mengontrol aliran eksekusi program. Pernyataan kontrol diklasifikasikan ke
dalam kategori berikut.
1.Pernyataan kontrol berurutan
2. Pernyataan kontrol bersyarat
(jenis) ekspresi;
3. Pernyataan kontrol tanpa syarat Atau
1.Berurutan kontrol pernyataan:- jenis (ekspresi);
pernyataan memastikan itu itu Instruksi kontrol berurutan (atau
pernyataan) dieksekusi dengan cara yang urutan di mana
mereka muncul dalam program. yaitu Oleh bawaan sistem
mengeksekusi pernyataan dalam urutan di dalamsekuensial
program.
2.Pernyataan kontrol bersyarat: Pernyataan yang dijalankan ketika suatu kondisi benar. Pernyataan-
pernyataan ini dibagi menjadi tiga kategori. mereka
1. Pernyataan pengambilan keputusan
2.Switch case control statement atau
3.Pernyataan kontrol loop atau pengulangan
1 .Pernyataan pengambilan keputusan: - Pernyataan ini digunakan untuk mengontrol aliran eksekusi suatu
program dengan membuat keputusan tergantung pada suatu kondisi, oleh karena itu disebut sebagai pernyataan
pengambilan keputusan.
Pernyataan pengambilan keputusan terdiri dari empat jenis
1. Sederhana jika
2.jika lain
3. bersarang jika lain
4.1 f tangga lainnya

1.51 mple if pernyataan: jika ekspresi tes benar maka jika pernyataan mengeksekusi pernyataan yang segera
mengikuti if
Sintaksis:
Jika (uji ekspresi)

Daftar pernyataan;

/*angka terbesar dari dua angka*/


#termasuk<stdio.h>
int utama()
{
int a,b;
cout<<"Masukkan sembarang dua bilangan bulat:";
cin>>a>>b;
jika(a>b)
cout<<"A lebih besar dari B\n A="<<a;
jika(b>a)
cout<<"B lebih besar dari A\n A="<<b;
kembali 0;
}
2 . pernyataan if-else:
Jika ekspresi tes benar blok pernyataan berikut jika dieksekusi dan jika ekspresi tes salah maka
pernyataan di blok lain dieksekusi jika (ekspresi tes)
{
blok pernyataan1;
}
kalau tidak
{
blok pernyataan2;
}

/*angka terbesar dari dua angka*/

#sertakan<iostream.h>
int utama()
{
int a,b;
cout<<"Masukkan sembarang dua bilangan bulat:";
cin>>a>>b;
if(a>b) cout<<“A lebih besar dari B\n A="<<a;

cout<<"B lebih besar dari A\n A="<<b;


kala
u kembali 0;

3 .Penyatuan pernyataan if-else JUGA MEMUNGKINKAN untuk menyarangkan satu pernyataan if di dalam pernyataan
lainnya. KETIKA serangkaian keputusan harus dibuat.
Pernyataan if –else ditempatkan di dalam pernyataan if else lainnya Sintaks:
If(uji ekspresi) { If(uji ekspresi) {
//pernyataan } else { //pernyataan } }
else
{ If(uji ekspresi) { //pernyataan } else {
//pernyataan }
} /*terbesar dari tiga angka*/
#sertakan<iostream.h>
#include<conio.h> int main() { int a,b,c;
cout<<"Masukkan nilai a,b,c :";
cin>>a>>b>>c;
jika(a>b) {
jika(a>c) {
cout<<"A ia
terbesar
diantara tiga
bilangan\n";
cout"A= "<<a;
} kalau tidak {
cout<<"C ia
terbesar
diantara tiga
bilangan\n"; cout<<"c= "<<c;
} } else { jika(b>c) {
cout<<"B ia terbesar diantara tiga bilangan\n"; cout<<"B="<<b;
}
kalau tidak
{
cout<<"C ia terbesar diantara tiga bilangan\n";
cout<<"c="<<c;
}
}
getch();
kembali 0;
}
4.1 f tangga lainnya

jika(kondisi1)
pernyataan1;
lain jika (kondisi2)
pernyataan 2;
lain jika (kondisi3)
pernyataan n;
kalau tidak
pernyataan bawaan.
pernyataan-x;

Bersarangnya if-else bergantung pada kondisi yang harus kita tangani.

Kondisi dievaluasi dari atas ke bawah. Jika suatu kondisi benar, pernyataan yang terkait dengannya dijalankan.
Ketika semua kondisi menjadi salah maka final bagian lain yang berisi pernyataan default akan dieksekusi.

#sertakan<iostream.h>
batal utama()
{
int per;
cout<<”Masuk
persentase"; cin>>per;
jika(per>=80)
cout<<"Aman
Perbedaan”<<endl; else if(per>=60)
cout<<”Aman Pertama
Pembagian”<<endl; lain jika(per>=50)
cout<<"Aman
Divisi Kedua”<<endl;
lain jika(per>=40)
cout<<"Aman
Pembagian”<<endl; Ketig
kalau tidak a
cout<<”Gagal”<<endl

PERNYATAAN SWITCH atau PILIHAN MULTIWAY :


Selain pemilihan dua arah, sebagian besar bahasa pemrograman menyediakan konsep pemilihan lain yang dikenal sebagai
pemilihan multiway. Multiway selection memilih diantara beberapa alternatif. C memiliki dua cara berbeda untuk
mengimplementasikan pemilihan multiway: pernyataan switch dan konstruksi else-if
Jika misalnya kita memiliki lebih dari satu pilihan yang valid untuk dipilih maka kita dapat
menggunakan pernyataan switch sebagai pengganti pernyataan if.
beralih (ekspresi)
{.
nilai kasus-1:
blok-1
merusak;
nilai kasus-2:
blok-2
merusak;

bawaan:
blok bawaan;

/*program untuk mensimulasikan kalkulator sederhana */ #include<iostream.h>


int utama()
{
mengapung a,b;
char opr;

cout<<"Masukkan bilangan1 operatorbilangan2 : ";


cin>>a>>oper>>b;
beralih (opr)
{
kasus '+':
cout<<"Jumlah : "<<(a+b)<<endl;
merusak;
case '-': cout<<"Perbedaan : "<<(a -b)<<endl;
merusak;
case '*': cout<<”Produk : "<<a * b<<endl;
merusak;
case '/': cout<<”Hasil Bagi :"<<(a / b)<<endl;
merusak;
default: cout<<"Operasi Tidak Valid!"<<endl;
}
kembali 0;
}

Pernyataan kontrol loop atau pengulangan:


Sebuah blok atau kumpulan pernyataan yang dieksekusi berulang kali sampai beberapa kondisi
terpenuhi disebut Loop. Kelompok pernyataan yang diapit oleh kurung kurawal disebut blok atau pernyataan
majemuk.
Kami memiliki dua jenis struktur perulangan.
Salah satu kondisi yang diuji sebelum memasuki blok pernyataan disebut entry control.
Yang lain di mana kondisinya diperiksa saat keluar disebut exit controlled loop.
Pernyataan loop dapat dibagi menjadi tiga kategori seperti yang diberikan di bawah ini
1 .pernyataan perulangan sementara
2 .do while pernyataan loop
3 .untuk pernyataan loop

1 .SEMENTARA PERNYATAAN :

Sementara (kondisi pengujian)


{
tubuh loop
}
Ini adalah loop yang dikontrol entri. Kondisi dievaluasi dan jika
benar maka badan loop dieksekusi. Setelah eksekusi body, kondisi sekali
lagi dievaluasi dan jika benar body dieksekusi sekali lagi. Ini berlangsung
sampai kondisi pengujian menjadi salah.

program c mencari jumlah n bilangan asli */


#sertakan<iostream.h>
int utama()
{
int i = 1,jumlah = 0,n;
cout<<"Masukan N"<<end;
cin>>n;
sementara(i<=n)
{
jumlah = jumlah + saya;
saya = saya + 1;
}

cout<<"Jumlah bilangan asli"<<n<"bilangan asli adalah:"<<jumlah<<endl; kembali 0;


}

2 . LAKUKAN SAAT PERNYATAAN :

tlo-while — (Keluar dikontrol)


Perulangan while tidak mengizinkan badan dieksekusi jika kondisi pengujian salah. do while adalah
loop keluar yang dikendalikan dan badannya dieksekusi setidaknya sekali.

Mengerjakan
{
tubuh
}sementara(kondisi pengujian);

/*program c mencari jumlah n bilangan asli */


#termasuk<stdio.h>
int utama()
{
int i = 1,jumlah = 0,n;
cout<<”Masukan N"<<endl;
cin>>n

Mengerjakan{
jumlah = jumlah + saya;
saya = saya + 1;
} while(i<=n);
cout<<"Jumlah bilangan asli"<< n<<"bilangan asli
adalah:”<<jumlah; kembali 0;
}
Catatan: jika kondisi pengujian salah. sebelum loop dieksekusi maka while loop mengeksekusi nol kali dimana do--while
mengeksekusi satu kali

3.UNTUK LOOP: Ini juga merupakan loop kontrol entri yang menyediakan struktur yang
lebih ringkas
Sintaksis:
for(inisialisasi; ekspresi uji; kenaikan/penurunan) {
pernyataan;
}
Pernyataan for dibagi menjadi tiga ekspresi yang masing-
masing dipisahkan oleh titik koma;
1. ekspresi initilisasi digunakan untuk menginisialisasi
variabel
2.test expression bertanggung jawab untuk melanjutkan loop.
Jika itu benar, maka aliran kontrol program masuk ke dalam
loop dan mengeksekusi blok pernyataan yang terkait
dengannya. Jika ekspresi tes adalah false loop berakhir
3.increment/decrement expression terdiri dari operator
kenaikan atau penurunan Proses ini berlanjut sampai kondisi
tes memenuhi .

/*program c mencari jumlah n bilangan asli */


#termasuk<stdio.h>
int utama()
{
int i ,jumlah = 0,n;
cout<<"Masukkan N";
cin>>n;

untuk(i=1;i<=n;i++)
{
jumlah = jumlah + saya;
}

cout<<“Jumlah bilangan asli”<<n<<” adalah:%d”<<jumlah; kembali 0;

Loop bersarang: Menulis satu pernyataan kontrol loop dalam pernyataan kontrol loop lain disebut
pernyataan loop bersarang

Mantan:
untuk(i=1;i<=10;i++)
untuk(j=1;j<=10;j++) cout<<i<<j;

/*program mencetak bilangan prima sampai dengan bilangan tertentu*/


#termasuk<stdio.h>
#sertakan<conio.h>
batal utama()
{
int n,i,fakta,j;
clrscr();
cout<<"masukkan bilangan :";
cin>>n
untuk(i=1;i<=n;i++)
{fakta=0;
// LOOP INI AKAN MEMERIKSA TIDAK MENJADI NO PRIME. ATAU
BUKAN. untuk(j=1;j<=i;j++)
{
jika(i%j==0) fakta++;
}
jika(fakta==2)

cout<<i<<”\t”;
}
getch();
}
Keluaran:
Masukkan nomor: 5
2 35

Pernyataan kontrol tanpa syarat:


Pernyataan yang mengalihkan kendali dari satu bagian program ke bagian lain
tanpa syarat Pernyataan tanpa syarat yang berbeda adalah
1) pergi
2) istirahat
3) lanjutkan
1.goto :- pernyataan goto digunakan untuk percabangan tanpa syarat atau transfer eksekusi program
ke pernyataan berlabel.
Pernyataan goto untuk bercabang tanpa syarat dari satu titik ke titik lainnya dalam program. Goto
membutuhkan label untuk mengidentifikasi tempat di mana cabang akan dibuat. Label adalah nama variabel
yang valid, dan harus diikuti dengan titik dua (;). Label segera dipasang
sebelum laporan dimana pengendalian akan dialihkan. Bentuk umum dari goto ditampilkan
di bawah:
pergi ke label:
label; penyataan;

label:
penyataan pergi ke
; label;
Lompat Maju Lompat Mundur
Label: dapat berada di mana saja dalam program baik sebelum atau sesudah label goto; penyataan.

Jika label: diletakkan setelah goto label;, beberapa pernyataan akan dilewati dan lompatan dikenal sebagai
Lompatan Maju.

Jika label: ditempatkan sebelum label kebagian; sebuah loop akan terbentuk beberapa pernyataan akan
dieksekusi berulang kali. Lompatan seperti itu dikenal sebagai Backward Jump.

/*program c mencari jumlah n bilangan asli */


#termasuk<stdio.h>
int utama()
{
int i ,jumlah = 0,n;
cout<<"Masukkan N";
cin>>n;
saya=1;
L1:
jumlah = jumlah + saya;
saya++;
jika(i<=n) kebagian L1;

cout<<“Jumlah bilangan asli “<<n<” pertama adalah”<<jumlah; kembali 0;


break: - ketika pernyataan break ditemui dalam satu loop, loop segera keluar dan
program berlanjut dengan pernyataan segera mengikuti loop
/*program c mencari jumlah n bilangan asli */
#termasuk<stdio.h>
int utama()
{
int i ,jumlah = 0,n;
cout<<"Masukkan N";
cin>>n;
saya=1;
L1:
jumlah = jumlah + saya;
saya++;
jika(i>n) pecah;
kebagian L1;

cout<<”Jumlah bilangan pertama”<<n<<”bilangan asli adalah : ”<<jumlah; kembali 0;


}

Lanjutkan: Ini digunakan untuk melanjutkan iterasi pernyataan loop dengan melewatkan
pernyataan setelah pernyataan lanjutan. Ini menyebabkan kontrol langsung ke kondisi
pengujian dan kemudian melanjutkan perulangan.
/*program c untuk mencari jumlah n bilangan positif yang dibaca dari keyboard*/
#termasuk<stdio.h>
int utama()
{
int i ,jumlah = 0,n,bilangan;
cout<<Masukkan N";
cin>>n;
untuk(i=1;i<=n;i++)
{
cout<<"Masukkan Angka :";
cin>>angka;
if(angka<0) lanjutkan;
jumlah = jumlah + angka;
}
cout<<“Jumlah”<<n<<” adalah :”<<jumlah;
kembali 0;
}
SATUAN -2

Fungsi, Kelas, dan Objek:


Pengenalan Kelas, Definisi Kelas, Mendefinisikan Anggota, Objek, Kontrol Akses,
Lingkup Kelas,Operator Resolusi Lingkup,Fungsi sebaris,Alokasi Memori untuk Objek, Anggota Data Statis,
Fungsi Anggota Statis, Array Objek, Objek sebagai Argumen Fungsi, Fungsi Teman.

Pengenalan Kelas:
Pendekatan pemrograman berorientasi objek adalah kumpulan objek dan setiap objek terdiri dari
struktur dan prosedur data yang sesuai. Program ini dapat digunakan kembali dan lebih dapat dipelihara.
Aspek penting dalam oop adalah kelas yang memiliki sintaks yang mirip dengan struktur.

class : Ini adalah kumpulan data dan fungsi anggota yang memanipulasi data. Komponen data kelas disebut
anggota data dan fungsi yang memanipulasi data disebut fungsi anggota.
Itu juga bisa disebut sebagai cetak biru atau prototipe yang mendefinisikan variabel dan fungsi yang
umum untuk semua objek dari jenis tertentu. Ia juga dikenal sebagai tipe data yang ditentukan pengguna atau
ADT (tipe data abstrak) Sebuah kelas dideklarasikan dengan kata kunci class .

Sintaksis:-

kelas nama_kelas {

Penentu akses :
Deklarasi variabel;

Penentu akses :
deklarasi fungsi;

};

Kontrol akses:
Penentu akses atau pengubah akses adalah label yang menentukan jenis akses yang diberikan kepada
anggota kelas. Ini digunakan untuk menyembunyikan data. Ini juga disebut sebagai mode visibilitas. Ada tiga
jenis penentu akses
1. pribadi
2.publik
3. dilindungi

1.Pribadi:
Jika anggota data dideklarasikan sebagai akses pribadi maka mereka tidak dapat diakses dari fungsi lain
di luar kelas. Itu hanya dapat diakses oleh fungsi yang dideklarasikan di dalam kelas. Dideklarasikan dengan
kata kunci „ privat ‟.

2.publik:
Jika anggota data dideklarasikan akses publik maka mereka dapat diakses dari fungsi lain di luar kelas.
Dinyatakan dengan kata kunci „ publik ‟.

3.dilindungi: Tingkat akses dari deklarasi yang dilindungi berada di antara publik dan pribadi. Penentu akses
ini digunakan pada saat pewarisan
Catatan:-
Jika tidak ada penentu akses yang ditentukan maka secara default diperlakukan sebagai pribadi
Penentu akses default struktur adalah publik sedangkan kelas adalah "pribadi"

Contoh:
siswa kelas
{
pribadi : int roll;
nama karakter[30];
publik:
batal get_data()
{
cout<<”Masukkan nomor dan nama roll”: cin>>roll>>nama;
}
batal put_data()
{

cout<<"Nomor rol:"<<roll<<endl;
cout<<”Nama :”<<nama<<endl;
}
};
Objek: -Instance kelas disebut objek.
Sintaksis:
nama_kelas nama_objek;
Mantan:
siswa;
Mengakses anggota :-dot operator digunakan untuk mengakses anggota kelas

Nama-objek.nama-fungsi(argumen aktual);

Mantan:
s.get_data();
s.put_data();
Catatan:
1 .Jika penentu akses tidak ditentukan di kelas, penentu akses default adalah pribadi
2 .Semua fungsi anggota harus dideklarasikan sebagai publik jika tidak dapat diakses di luar kelas.
Obyek:
Contoh kelas disebut sebagai objek.
Sintaksis:
Class_name nama objek;

Contoh:
siswa;
dalam contoh di atas s adalah objek. Ini adalah entitas waktu nyata yang dapat digunakan
Buatlah program untuk membaca data siswa
#termasuk<iostream>
menggunakan namespace std;
siswa kelas
{
pribadi:
int gulungan;
nama karakter[20];

publik:
batal getdata()
{cout<<”Masukkan nomor Rol:”;
cin>>gulung;
cout<<”Masukkan Nama :”;
cin>>nama;
}
batal putdata()
{cout<<"Nomor gulungan:"<<roll<<endl;
cout<<Nama:”<<nama<<endl;
}
};
int utama()
{
siswa;
s.getdata();
s.putdata();
kembali 0;
}
Operator Resolusi Lingkup:
Lingkup: - Visibilitas atau ketersediaan variabel dalam suatu program disebut sebagai ruang
lingkup. Ada dua jenis ruang lingkup. i) Lingkup lokal ii) Lingkup global
Cakupan lokal: visibilitas variabel lokal ke fungsi yang dideklarasikan.
Lingkup global: visibilitas variabel ke semua fungsi program
Operator resolusi lingkup di “::” .
Ini digunakan untuk mengakses variabel global jika variabel yang sama dideklarasikan sebagai
lokal dan global

#sertakan<iostream.h>
int a=5;
batal utama()
{
int a=1;
cout<<"Lokal a="<<a<<endl;
cout<<"Global a="<<::a<<endl;
}

Cakupan Kelas:
Operator resolusi lingkup (::) digunakan untuk mendefinisikan fungsi di luar kelas.

#termasuk <iostream>
menggunakan namespace std;
sampel kelas
{
publik:
keluaran batal(); // deklarasi fungsi
};
// definisi fungsi di luar
kelas batal sampel::output() {
cout << "Fungsi didefinisikan di luar kelas.\n";

};
int utama() {
contoh objek;
obj.output();
kembali 0;
}
Keluaran program:
Fungsi didefinisikan di luar kelas.

Buatlah program untuk mencari luas persegi panjang


#sertakan<iostream.h>
persegi panjang kelas
{
int L,B;
publik:
batal get_data();
daerah kosong();
};

batal persegi panjang::get_data()


{
cout<<"Masukkan Panjang Persegi Panjang";
cin>>L;
cout<<"Masukkan lebar persegi panjang";
cin>>B;
}
int persegi panjang::luas()
{
kembalikan L*B;
}
int utama()
{
persegi panjang r;
r.get_data();
cout<<”Luas persegi panjang adalah”<<r.luas();
kembali 0;
}

FUNGSI INLINE:
Definisi:
Fungsi inline adalah fungsi yang diperluas sejalan ketika dipanggil. Ekspansi sebaris membuat program
berjalan lebih cepat karena overhead pemanggilan dan pengembalian fungsi dihilangkan. Ini
didefinisikan dengan menggunakan kata kunci "inline"

Kebutuhan Fungsi Inline:


> • ,, , Salah satu tujuan penggunaan fungsi dalam suatu program adalah untuk menghemat ruang memori, yang menjadi cukup
berarti ketika suatu fungsi kemungkinan akan dipanggil berkali-kali.
Setiap kali suatu fungsi dipanggil, dibutuhkan banyak waktu ekstra dalam mengeksekusi serangkaian instruksi
untuk tugas-tugas seperti melompat ke fungsi, menyimpan register, memasukkan argumen ke dalam tumpukan,
dan kembali ke fungsi pemanggilan.
>
Ketika suatu fungsi kecil, persentase waktu eksekusi yang substansial dapat dihabiskan untuk biaya overhead
tersebut.
Salah satu solusi untuk masalah ini adalah dengan menggunakan definisi makro yang dikenal sebagai
makro. Makro preprosesor sangat populer di C. Kelemahan utama makro adalah bahwa mereka tidak
benar-benar berfungsi dan oleh karena itu, pemeriksaan kesalahan biasa tidak terjadi selama kompilasi.
C++ memiliki solusi berbeda untuk masalah ini. Untuk menghilangkan biaya panggilan ke fungsi kecil,
C++ mengusulkan fitur baru yang disebut fungsi inline.
Formulir Umum:
fungsi-header sebaris
{
fungsi tubuh;
Misalnya:
#sertakan<iostream.h>
inline float mul(float x, float y)
{
kembali (x*y);
}
div ganda sebaris (p ganda, q ganda)
{
kembali (p/q);
}
int utama()
{
apung a=12,345;
apung b=9,82;
cout<<mul(a,b);
cout<<div(a,b);
kembali 0;
}
Properti fungsi sebaris:
1.Fungsi sebaris mengirim permintaan tetapi bukan perintah ke kompiler
2.Kompiler melayani saya atau mengabaikan permintaan
3.Jika fungsi memiliki terlalu banyak baris kode atau jika memiliki logika yang rumit maka dijalankan
sebagai fungsi normal
Situasi di mana sebaris tidak berfungsi:
>
Sebuah fungsi yang mengembalikan value , jika mengandung switch loop atau keduanya maka diperlakukan sebagai fungsi
normal.
>
jika suatu fungsi tidak mengembalikan nilai apa pun dan berisi pernyataan pengembalian maka itu diperlakukan sebagai
fungsi normal
>
Jika fungsi berisi variabel statis maka dijalankan sebagai fungsi normal
>
Jika fungsi inline dideklarasikan sebagai fungsi rekursif maka itu dijalankan sebagai fungsi normal.
Alokasi Memori untuk Objek: Memori untuk objek dialokasikan saat dideklarasikan tetapi tidak saat kelas
ditentukan. Semua objek dalam kelas tertentu menggunakan fungsi anggota yang sama. Fungsi anggota dibuat
dan ditempatkan di memori hanya sekali ketika didefinisikan dalam definisi kelas
ANGGOTA KELAS STATIS

Anggota Data Statis


Fungsi Anggota Statis
Anggota Data Statis:
Anggota data kelas dapat dikualifikasikan sebagai statis. Variabel anggota statis memiliki karakteristik
khusus tertentu:
Itu diinisialisasi ke nol ketika objek pertama dari kelasnya dibuat. Tidak ada inisialisasi lain yang diizinkan.
Hanya satu salinan dari anggota itu yang dibuat untuk seluruh kelas dan digunakan bersama oleh semua objek kelas itu,
tidak peduli berapa banyak objek yang dibuat.
Itu hanya terlihat di dalam kelas, tetapi masa pakainya adalah seluruh program.
Anggota data statis didefinisikan dengan kata kunci „statis ‟

Sintaksis:
Tipe data class name::static_variable Name;
Contoh: int item::hitung;
#sertakan<iostream.h>
#sertakan<conio.h>
barang kelas
{
jumlah int statis;
int nomor;
publik:
batal getdata(int a) {
nomor=a; hitung++;
}
batalkan getcount()
{
cout<<"jumlah adalah"<<jumlah;
}
};
int item::menghitung;//decleration
int utama()
{
butir a,b,c;
a.getcount();
b.getcount();
c.getcount();
a.getdata(100);
b.getdata(200);
c.getdata(300);
cout<<"Setelah membaca data";
a.getcount();
b.getcount();
c.getcount();
kembali 0;
}
Keluaran:
hitungan adalah 0
hitungan adalah 0
hitungan adalah 0
Setelah membaca data
hitungannya 3
hitungannya 3
hitungannya 3
Fungsi Anggota Statis
Seperti variabel anggota statis, kita juga dapat memiliki fungsi anggota statis. Fungsi anggota yang
dinyatakan statis memiliki properti berikut:
Fungsi statis hanya dapat memiliki akses ke anggota statis lainnya (fungsi atau variabel) yang
dideklarasikan di kelas yang sama.
Fungsi anggota statis harus dipanggil menggunakan nama kelas (bukan objeknya) sebagai berikut:
nama-kelas :: nama-fungsi;

#sertakan<iostream.h>
tes kelas
{
kode int;
jumlah int statis;
publik:
membatalkan setcode()
{
kode=++jumlah;
}
membatalkan showcode()
{
cout<<”nomor objek”<<kode;
}
showcount kekosongan statis ()
{
cout<<”menghitung”<<menghitung;
}
};
int tes::menghitung;
int utama()
{
uji t1,t2;
t1.setcode();
t2.setcode();
test::showcount();
uji t3;
t3.setcode();
test::showcount();
t1.showcode();
t2.showcode();
t3.showcode();
kembali 0;
}
Keluaran:
hitungan 2
hitungan 3
objek nomor 1
objek nomor 2
objek nomor 3

Array Objek : Array variabel tipe "kelas" dikenal sebagai "Array objek". Larik objek disimpan di dalam
memori dengan cara yang sama seperti pada larik biasa.
Sintaksis:
kelas_nama_kelas
{

pribadi:
anggota data_type;
publik:
anggota data_type; fungsi anggota;
};

Susunan objek:
Nama_kelas nama_objek[ukuran];
Di mana ukuran adalah ukuran array
Mantan:
Obj kelasku[10];
Tulis program untuk menginisialisasi array objek dan mencetaknya
#termasuk<iostream>
menggunakan namespace std;
kelas MyClass
{
int a;
publik:
himpunan kosong(int x)
{
a=x;
}

int dapatkan()
{
kembalikan;
}
};
int utama()
{
Obj Kelasku[5];
untuk(int i=0;i<5;i++)
obj[i].set(i);
untuk(int i=0;i<5;i++)
cout<<"obj["<<i<<"].get():"<<obj[i].get()<<endl;
}
Keluaran:
obj[0].dapatkan():0
obj[1].dapatkan():1
obj[2].dapatkan():2
obj[3].dapatkan():3
obj[4].dapatkan():4

Objek sebagai Argumen Fungsi: Objek dapat digunakan sebagai argumen untuk
fungsi Ini dapat dilakukan dengan tiga cara
a. Pass-by-value atau call by value
b. Lewati alamat atau hubungi melalui alamat
c. Pass-by-reference atau panggilan dengan referensi

a.Pass-by-value – Salinan objek (objek aktual) dikirim ke fungsi dan ditugaskan ke objek yang disebut fungsi
(objek formal). Salinan objek aktual dan formal disimpan di lokasi memori yang berbeda. Oleh karena itu,
perubahan yang dilakukan pada objek formal tidak tercermin pada objek yang sebenarnya. tulis program untuk
menukar nilai dua objek
tulis program untuk menukar nilai dua objek
#sertakan<iostream.h>
menggunakan namespace std;
sampel kelas2;
sampel kelas1
{
int a;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);
pertukaran batal teman (sample1 x, sample2 y);
};
batal sample1::getdata(int x)
{
a=x;
}
sampel kelas2
{
int b;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);

pertukaran batal teman (sample1 x, sample2 y);


};
batal sample2::getdata(int x)
{
b=x;
}
tampilan batal (sample1 x, sample2 y)
{
cout<<"Data pada objek 1 adalah"<<endl;
cout<<"a="<<xa<<endl;
cout<<"Data pada objek 2 adalah"<<endl;
cout<<"b="<<yb<<endl;
}
batal menukar (sample1 x, sample2 y)
{
int t;
t=xa;
xa=yb;
yb=t;
}
int utama()
{
sampel1 objek1;
sample2 obj2;
obj1.getdata(5);
obj2.getdata(15);
cout<<"Sebelum Menukar data antara Dua objek\n
"; tampilkan(obj1,obj2);
tukar(obj1,obj2);
cout<<"Setelah Tukar Data Antara Dua Objek\n ";
tampilkan(obj1,obj2);
}
Sebelum Menukar data antara Dua objek
Data pada objek 1 adalah a=5
Data pada objek 2 adalah b=15
setelah Tukar data antara Dua objek
Data pada objek 1 adalah a=5
Data pada objek 2 adalah b=15
B. Pass-by-address: Alamat objek dikirim sebagai argumen ke fungsi.
Di sini ampersand(&) digunakan sebagai operator alamat dan tanda panah (->) digunakan sebagai operator
referensi. Jika ada perubahan yang dilakukan pada argumen formal maka ada perubahan pada argumen yang
sebenarnya , tulis sebuah program untuk menukar nilai dari dua objek
#sertakan<iostream.h>
menggunakan namespace std;
sampel kelas2;
sampel kelas1
{
int a;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);
pertukaran batal teman (sample1 *x, sample2 *y);

};
batal sample1::getdata(int x)
{
a=x;
}
sampel kelas2
{
int b;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);
pertukaran batal teman (sample1 *x, sample2 *y);
};
batal sample2::getdata(int x)
{
b=x;
}
tampilan batal (sample1 x, sample2 y)
{
cout<<"Data pada objek 1 adalah "<<endl;
cout<<"a="<<xa<<endl;
cout<<"Data pada objek 2 adalah"<<endl;
cout<<"b="<<yb<<endl;
}
batal menukar (sample1 *x,sample2 *y)
{
int t;
t=x->a;
x->a=y->b;
y->b=t;
}
int utama()
{
sampel1 objek1;
sample2 obj2;
obj1.getdata(5);
obj2.getdata(15);
cout<<"Sebelum Menukar Data Antara Dua Objek\n ";
tampilkan(obj1,obj2);
tukar(&obj1,&obj2);
cout<<"Setelah Tukar Data Antara Dua Objek\n ";
tampilkan(obj1,obj2);
}
Sebelum Menukar data antara Dua objek
Data pada objek 1 adalah a=5
Data pada objek 2 adalah b=15
setelah Tukar data antara Dua objek
Data pada objek 1 adalah a=15
Data pada objek 2 adalah b=5 c.Pass-by-reference : Referensi objek dikirim sebagai argumen ke fungsi.
Referensi ke variabel memberikan nama alternatif untuk variabel yang ditentukan sebelumnya. Jika ada
perubahan yang dilakukan pada variabel referensi maka ada perubahan pada variabel asli.
Variabel referensi dapat dideklarasikan sebagai berikut

Tipe data & variabel referensi =variabel;

int x=5;
int &y=x;

Mantan:
Tulis program untuk mencari jumlah n bilangan asli dengan menggunakan variabel referensi
#include<iostream.h>
menggunakan namespace std;
int utama()
{
int i=0;
int &j=i;
int s=0;
int n;
cout<<"Masukkan n:";
cin>>n;
sementara(j<=n)
{
s=s+i;
saya++;
}
cout<<"sum="<<s<<endl;
}
Keluaran:
Masukkan n:10
jumlah=55
tulis program untuk menukar nilai dua objek
#sertakan<iostream.h>
menggunakan namespace std;
sampel kelas2;
sampel kelas1
{
int a;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);
pertukaran teman batal (sample1 &x, sample2 &y);
};
batal sample1::getdata(int x)
{
a=x;
}
sampel kelas2
{
int b;
publik:
batal getdata(int x);
tampilan batal teman (sample1 x, sample2 y);
pertukaran teman batal (sample1 &x, sample2 &y);
};
batal sample2::getdata(int x)
{
b=x;
}
tampilan batal (sample1 x, sample2 y)
{
cout<<"Data pada objek 1 adalah "<<endl;
cout<<"a="<<xa<<endl;
cout<<"Data pada objek 2 adalah"<<endl;
cout<<"b="<<yb<<endl;
}
batal menukar (sample1 &x, sample2 &y)
{
int t;
t=xa;
xa=yb;
yb=t;
}
int utama()
{
sampel1 objek1;
sample2 obj2;
obj1.getdata(5);
obj2.getdata(15);
cout<<"Sebelum Menukar Data Antara Dua Objek\n ";
tampilkan(obj1,obj2);
tukar(obj1,obj2);
cout<<"Setelah Tukar Data Antara Dua Objek\n ";
tampilkan(obj1,obj2);
}
Keluaran:
Sebelum Menukar data antara Dua objek
Data pada objek 1 adalah a=5
Data pada objek 2 adalah b=15
setelah Tukar data antara Dua objek
Data pada objek 1 adalah a=15
Data pada objek 2 adalah b=5
FUNGSI TEMAN: Anggota pribadi tidak dapat diakses dari luar kelas. yaitu ... fungsi non anggota tidak
dapat memiliki akses ke data pribadi kelas. Dalam C++, fungsi non-anggota dapat mengakses privat dengan
membuat fungsi ramah ke kelas.
Definisi:
Fungsi teman adalah fungsi yang dideklarasikan di dalam kelas dan didefinisikan di luar kelas. Itu tidak
memerlukan operator resolusi ruang lingkup untuk mendefinisikan . Itu dapat mengakses anggota pribadi dari
suatu kelas. Itu dideklarasikan dengan menggunakan kata kunci "teman"
Mantan:
sampel kelas
{ int x,y; publik: sampel(int a,int b);
teman int jumlah(sampel s);
};
sampel::sampel(int a,int b)
{ x=a;y=b;
}
int jumlah(sampel s)
{ int jumlah;
jumlah=s.x+sy;
kembali 0;
}
batal utama()
{
Contoh obj(2,3);
int res=jumlah(obj);
cout<<"jumlah="<<res<<endl;
}
Fungsi teman memiliki karakteristik khusus tertentu:
Itu tidak dalam ruang lingkup kelas yang telah dinyatakan sebagai teman.
Karena tidak dalam ruang lingkup kelas, itu tidak dapat dipanggil menggunakan objek dari kelas itu. Itu dapat dipanggil seperti
fungsi normal tanpa bantuan objek apa pun.
Tidak seperti fungsi anggota, ia tidak dapat mengakses nama anggota secara langsung dan harus menggunakan nama objek dan
operator keanggotaan dot dengan setiap nama anggota.
Itu dapat dideklarasikan baik di bagian publik atau pribadi dari suatu kelas tanpa mempengaruhi maknanya.
Biasanya, ia memiliki objek sebagai argumen.
#include<iostream.h> contoh kelas
{
int a;
int b;
publik:
membatalkan nilai yang ditetapkan()
{
a=25;
b=40;
}
mean float teman (sampel s);
};
rata-rata float (sampel s)
{
return float(s.a+sb)/2.0;
}
int utama()
{
sampel X;
X.setnilai();
cout<<"Nilai Rata-Rata="<<mean(X);
kembali 0;
}
tulis program untuk menemukan maksimal dua angka menggunakan fungsi teman untuk dua kelas
berbeda #include<iostream>
menggunakan namespace std;
sampel kelas2;
sampel kelas1
{
int x;
publik:
sampel1(int a);
teman void max(sample1 s1, sample2 s2)
};
sampel1::sampel1(int a)
{
x=a;
}
sampel kelas2
{
int y;
publik:
sampel2(int b);
teman void max(sample1 s1, sample2 s2)
};
Sampel2::sampel2(int b)
{
y=b;
}
batal max(sample1 s1,sample2 s2)
{
Jika(s1.x>s2.y)
cout<<”Data member pada objek kelas sample1 lebih besar ”<<endl;
kalau tidak
cout<<”Data member di objek kelas sample2 lebih besar ”<<endl;
}
batal utama()
{
sample1 obj1(3);
sample2 obj2(5);
maks(obj1,obj2);
}

Buatlah program untuk menjumlahkan bilangan kompleks menggunakan fungsi teman

#termasuk<iostream>
menggunakan namespace std;
kompleks kelas
{
float nyata,img;
publik:
kompleks();
kompleks(float x,float y)
kompleks teman add_complex(kompleks c1,kompleks c2);
};
kompleks::kompleks()
{
nyata=img=0;
}
kompleks::kompleks(float x,float y)
{
real=x;img=y;
}
kompleks add_complex(kompleks c1,kompleks c2)
{
t kompleks;
t.nyata=c1.nyata+c2.nyata;
t.img=c1.img+c2.img;
kembali t;
}
batal kompleks::tampilan ()
{
jika(img<0)
{img=-img;
cout<<nyata<<"-i"<<img<<endl
} else { cout<<nyata<<"+i"<<img<<endl
}
}
int utama()
{
kompleks obj1(2,3);
kompleks obj2(-4,-6);
kompleks obj3=add_compex(obj1,obj2);
obj3.tampilan();
kembali 0;
}

Kelas Teman: Kelas juga dapat dideklarasikan sebagai teman dari beberapa kelas lain. Ketika kita membuat
class teman maka semua fungsi anggota dari class teman juga menjadi teman dari kelas lain. Ini membutuhkan
syarat bahwa teman yang menjadi kelas harus dideklarasikan atau didefinisikan terlebih dahulu (deklarasi
maju).
#termasuk <iostream.h>
sampel kelas_1
{
sample_2 kelas teman;//mendeklarasikan kelas teman
int a,b;
publik:
batal getdata_1()
{
cout<<"Masukkan nilai A & B pada kelas sample_1";
cin>>a>>b;
}
batal display_1()
{
cout<<"A="<<a<<endl;
cout<<"B="<<b<<endl;
}

};
sampel kelas_2
{
int c,d,jumlah;
sample_1 obj1;
publik:
batal getdata_2()
{
obj1.getdata_1();
cout<<"Masukkan nilai C & D di kelas sample_2"; cin>>c>>d;
}
batal jumlah_2()
{
jumlah=obj1.a+obj1.b+c+d;
}

batal display_2()
{
cout<<"A="<<obj1.a<<endl;
cout<<"B="<<obj1.b<<endl;
cout<<"C="<<c<<endl;
cout<<"D="<<d<<endl;
cout<<"SUM="<<jumlah<<endl;
}
};
int utama()
{
sample_1 s1;
s1.getdata_1();
s1.tampilan_1();
sample_2 s2;
s2.getdata_2();
s2.sum_2();
s2.tampilan_2();
}

Masukkan nilai A & B di kelas sample_1:1 2


A=1
B=2
Masukkan nilai A & B di kelas sample_1:1 2 3 4
Masukkan nilai C & D di kelas sample_2:A=1
B=2
K=3
D=4
JUMLAH=10
UNIT 3

Konstruktor, Destruktor, Warisan:


Pengantar Konstruktor, Konstruktor Default, Konstruktor Berparameter, Salin Konstruktor Beberapa
Konstruktor dalam Kelas, Destruktur.
Pewarisan : Pengantar pewarisan, Mendefinisikan Derived Classes, Pewarisan Tunggal, Pewarisan
Berganda, Pewarisan Bertingkat, Pewarisan Hirarkis, Pewarisan Hybrid.
D
Pengantar Konstruktor: C++ menyediakan fungsi anggota khusus yang disebut
konstruktor yang memungkinkan objek untuk menginisialisasi dirinya sendiri saat
dibuat.
Definisi: - Konstruktor adalah fungsi anggota khusus yang tugasnya menginisialisasi objek kelasnya.
Istimewa karena namanya sama dengan nama kelasnya. Konstruktor dipanggil setiap kali objek dari
kelas terkait dibuat. Ini disebut konstruktor karena membangun nilai data anggota kelas.
Sebuah konstruktor dideklarasikan dan didefinisikan sebagai berikut:

bilangan bulat obj1; => tidak hanya membuat objek obj1 tetapi juga menginisialisasi anggota datanya m dan n
ke nol. Tidak perlu menulis pernyataan apa pun untuk menjalankan fungsi konstruktor.
KARAKTERISTIK KONSTRUKTOR
> Mereka harus diumumkan di bagian publik.
Mereka dipanggil secara otomatis saat objek dibuat.
> Mereka tidak memiliki tipe pengembalian, bahkan tidak batal.
Mereka tidak dapat diwariskan, meskipun kelas turunan dapat memanggil
konstruktor kelas dasar.
> Seperti fungsi c++ lainnya, mereka dapat memiliki argumen default.

> Konstruktor tidak bisa virtual.

>
Mereka membuat 'panggilan implisit' ke operator baru dan menghapus ketika alokasi memori
diperlukan.
Konstruktor terdiri dari 3 jenis:
1. Konstruktor Default
2. Konstruktor berparameter
3. Salin Pembuat
1 .Default Constructor: Sebuah constructor yang tidak menerima parameter disebut default constructor .
#sertakan<iostream.h>
#sertakan<conio.h> item kelas
{
int m,n;
publik:
barang()
{
m=10;
n=20;
}
batal masukkan();
};
barang batal::taruh() {
cout<<m<<n;
}
batal utama()
{
barang t;
t.put();
getch();
}
2 .Konstruktor Berparameter: - Konstruktor yang mengambil parameter disebut
konstruktor berparameter.
#sertakan<iostream.h>
barang kelas
{
int m,n;
publik:
item(int x, int y)
{

m=x;
n=y;
}

};
Ketika konstruktor telah diparameterisasi, pernyataan deklarasi objek seperti item t; mungkin
tidak bekerja. Kita harus meneruskan nilai awal sebagai argumen ke fungsi konstruktor saat objek
dideklarasikan. Ini dapat dilakukan dengan 2 cara: item t=item(10,20); // panggilan eksplisit

butir t(10,20); // panggilan implisit


Misalnya:
#sertakan<iostream.h>
#sertakan<conio.h>
barang kelas
{
int m,n;
publik:
item(int x,int y)
{
m=x;
n=y;
}

batal masukkan();
};
item batal::taruh()
{
cout<<m<<n;
}
batal utama()
{
butir t1(10,20);
angka t2=angka(20,30);
t1.put();
t2.put();
getch();
}
3 .Copy Constructor: Copy constructor digunakan untuk mendeklarasikan dan
menginisialisasi objek dari objek lain.
Misalnya:
butir t2(t1);
atau
barang t2=t1;

1. Proses inisialisasi melalui copy constructor dikenal sebagai copy initialization.


2. t2=t1 tidak akan memanggil copy constructor. t1 dan t2 adalah objek, berikan nilai t1 ke t2.
3. Pembuat salinan mengambil referensi ke objek dari kelas yang sama dengan dirinya sendiri
sebuah argumen. #sertakan<iostream.h>
sampel kelas
{
int n;
publik:
Sampel()
{
n=0;
}
sampel(int a)
{
n=a;
}
sampel(sampel &x)
{
n=xn;
}
tampilan kosong()
{
cout<<n;
}
};
batal utama()
{
sampel A(100);
sampel B(A);
sampel C=A;
sampel D;
D=A;
A.tampilan();
B.tampilan();
C.tampilan();
D.tampilan();
}

Keluaran: 100 100 100 100

Beberapa Konstruktor dalam Kelas: Beberapa konstruktor dapat dideklarasikan dalam sebuah kelas.
Bisa ada sejumlah konstruktor di kelas.
kompleks kelas
{
float nyata,img;
publik:
kompleks()// konstruktor default
{

nyata=img=0;
}

kompleks(float r)//konstruktor berparameter parameter tunggal


{

nyata=img=r;
}

complex(float r,float i) //konstruktor berparameter dua parameter


{

real=r;img=i;
}
kompleks(kompleks&c)//salin konstruktor
{
real=c.nyata;
img=c.img;

}
jumlah kompleks(kompleks c ) {
t kompleks;
t.nyata=nyata+c.nyata;
t.img=img+c.img;
kembali t;
}
batal tampilkan()
{
Jika(img>0)
cout<<nyata<<"+i"<<img<<endl;
kalau tidak
{
img=-img;
cout<<nyata<<"-i"<<img<<endl;
}

};
batal utama()
{
kompleks c1(1,2);
kompleks c2(2,2);
kompleks c3;
c3=c1.sum(c3);
c3.show();

DESTRUCTORS: Destruktor, digunakan untuk menghancurkan objek yang telah dibuat oleh konstruktor.
Seperti konstruktor, destruktor adalah fungsi anggota yang namanya sama dengan nama kelas tetapi
didahului oleh tilde.
Misalnya: ~item() { }
1. Destruktor tidak pernah mengambil argumen apa pun juga tidak mengembalikan nilai apa pun.
2. Itu akan dipanggil secara implisit oleh kompiler saat keluar dari program untuk membersihkan
penyimpanan yang tidak lagi dapat diakses.
3. Ini adalah praktik yang baik untuk mendeklarasikan destruktor dalam suatu program karena melepaskan
ruang memori untuk penggunaan di masa mendatang.

#termasuk<iostream>
menggunakan namespace std;
Tanda kelas
{
publik:
int matematika;
int sains;

// konstruktor
Tanda() {
cout<<"Di dalam Konstruktor"<<endl;
cout << "Objek C++ telah dibuat"<<endl;
}

//Destruktor
~Tanda() {
cout<<"Di dalam Destructor"<<endl;
cout << "Objek C++ dihancurkan"<<endl;
}
};

int utama()
{
Menandai m1;
Menandai m2;
kembali 0;
}

Keluaran:
Di dalam Konstruktor
Objek C++ dibuat
Di dalam Konstruktor
Objek C++ dibuat
Di dalam Penghancur
Objek C++ dihancurkan
Di dalam Penghancur
Objek C++ dihancurkan

WARISAN: . Mekanisme menurunkan kelas baru dari yang lama disebut pewarisan atau derivasi . Kelas
lama disebut sebagai kelas dasar dan yang baru disebut kelas turunan atau sub kelas . Kelas turunan mewarisi
beberapa atau semua sifat dari kelas dasar.
Kelas juga dapat mewarisi properti dari lebih dari satu kelas atau dari lebih dari satu level. Dapat
digunakan kembali adalah fitur penting dari OOP

Kelas turunan dapat didefinisikan dengan menentukan hubungannya dengan kelas dasar selain detailnya sendiri.

class-derived-class-name : visibility-mode base-class-name {

Titik dua menunjukkan bahwa nama kelas turunan berasal dari nama kelas dasar. mode visibilitas bersifat
opsional dan jika ada, dapat berupa pribadi atau dilindungi atau publik. Standarnya adalah pribadi. Mode
visibilitas menentukan apakah fitur dari kelas dasar diturunkan secara pribadi atau diturunkan secara publik.

kelas ABC : private XYZ { // derivasi pribadi


anggota ABC;
};
kelas ABC: XYZ publik
{
anggota ABC;
};
// derivasi publik

kelas ABC: XYZ terproteksi { // anggota derivasi terproteksi dari ABC;


};
kelas ABC:XYZ // pribadi secara default
{
anggota ABC;
};
Ketika kelas dasar diwariskan secara pribadi oleh kelas turunan, anggota publik dari kelas dasar
hanya dapat diakses oleh fungsi anggota dari kelas turunan. Anggota pribadi dari kelas dasar tidak dapat diakses
oleh objek dari kelas turunan
Ketika kelas dasar dilindungi yang diwariskan oleh kelas turunan, anggota publik dari kelas dasar
hanya dapat diakses oleh fungsi anggota dari kelas turunan. Anggota pribadi dari kelas dasar tidak dapat diakses
oleh objek dari kelas turunan. Jika anggota pribadi dari kelas dasar akan diwariskan ke kelas turunan, nyatakan
mereka sebagai dilindungi
Ketika kelas dasar diwarisi secara publik , anggota publik dari kelas dasar diwarisi secara publik,
anggota publik dari kelas dasar menjadi anggota publik dari kelas turunan dan oleh karena itu mereka dapat
diakses oleh objek dari kelas turunan. Dalam kedua kasus tersebut, anggota privat tidak diwariskan dan oleh
karena itu, anggota privat dari kelas dasar tidak akan pernah menjadi anggota kelas turunannya.
Dalam pewarisan, beberapa elemen data kelas dasar dan fungsi anggota 'diwariskan' ke dalam kelas
turunan. Kita dapat menambahkan data dan fungsi anggota kita sendiri dan dengan demikian memperluas
fungsionalitas kelas dasar. Warisan, ketika digunakan untuk memodifikasi dan memperluas kemampuan kelas
yang ada, menjadi alat yang sangat ampuh untuk pengembangan program inkremental.

Visibilitas anggota yang diwariskan


Visibilitas elate diturunkan
Vitibilitas Baur cUu*
Derivasi publik Derivasi pribadi Derivasi terlindungi
Pribadi —♦ Tidak diwariskan Tidak diwariskan Tidak diwariskan
Terlindung ♦ Dilindungi Pribadi Terlindung
Publik — Pribadi Terlindung
Publik

Jenis Warisan: 1. Warisan Tunggal 2. Warisan Bertingkat 3. Warisan Berganda 4. Warisan Hibrida 5. Warisan
Hirarkis.
1.WARISAN TUNGGAL: satu kelas turunan mewarisi hanya dari satu kelas dasar. Ini adalah bentuk Warisan
yang paling sederhana.

Kelas A / / Basis

B // kelas turunan
#include<iostream> menggunakan namespace std; kelas A { publik: int a,b; void get() { cout<<"Masukkan
sembarang dua nilai bilangan bulat"<<endl; cin>>a>>b;
} };

kelas B: publik A {
int c;
publik:
batal tambahkan()
{ c=a+b;
cout<<a<<"+"<<b<<"="<<c;
}
};

int utama()
{
B b;
b.dapatkan();
b.tambahkan();
}

Keluaran:
Masukkan dua nilai bilangan bulat
12
1+2=3
2.WARISAN MULTILEVEL: Dalam jenis pewarisan ini, kelas turunan mewarisi dari suatu kelas, yang pada
gilirannya mewarisi dari beberapa kelas lain. Kelas Super untuk satu, adalah sub kelas untuk yang lain.

#sertakan<iostream.h>
kelas A
{
publik:
int a,b;
batal dapatkan()
{
cout<<"Masukkan dua nilai bilangan bulat"<<endl;
cin>>a>>b;
}
};

kelas B: publik A
{
publik:
int c;
batal tambahkan()
{
c=a+b;
}
};

kelas C: publik B
{
publik:
batal tampilkan()
{
cout<<a<<"+"<<b<<"="<<c;
}
};
int utama()
{
Cc;
c.dapatkan();
c.tambahkan();
c.show();
}
Keluaran:
Masukkan dua nilai bilangan bulat
12 14
12+14=26
3 .Multiple Inheritance: Dalam jenis pewarisan ini, satu kelas turunan dapat mewarisi dari dua atau lebih
dari dua kelas dasar.

Sintaksi
s: kelas D : jarak pandang A, jarak pandang B,…. {

#sertakan<iostream.h>
kelas A
{
publik:
int a;
batal getA()
{
cout<<"Masukkan Nilai Integer"<<endl; cin>>a;
}
};
kelas B
{
publik:
int b;
batal getB()
{
cout<<"Masukkan Nilai Integer"<<endl; cin>>b;
}
};

kelas C: publik A, publik B


{
publik:
int c;
batal tambahkan()
{
c=a+b;
cout<<a<<"+"<<b<<"="<<c<<endl;
}
};
int utama()
{
C obj;
obj.getA();
obj.getB();
obj.tambahkan();
}
Masukkan bilangan bulat
nilai 12 Masukkan sebuah
Nilai bilangan bulat 13 12+13=25

4 .Hybrid Inheritance : Pewarisan hibrid adalah kombinasi dari dua atau lebih pewarisan seperti
pewarisan tunggal, ganda, bertingkat atau hirarkis.
#sertakan<iostream.h>
aritmatika kelas
{
terlindung:
int angka1, angka2;
publik:
batal getdata()
{
cout<<"Untuk Penambahan :";
cout<<"\nMasukkan bilangan pertama : ";
cin>>angka1;
cout<<"\nMasukkan bilangan kedua : ";
cin>>bil2;
}
};
kelas plus: aritmatika publik
{
terlindung:
int jumlah;
publik:
batal tambahkan()
{
jumlah=bil1+bil2;
}
};
minus kelas
{
terlindung:
int n1,n2,beda;
publik:
batal sub()
{
cout<<"\nUntuk Pengurangan :";
cout<<"\nMasukkan bilangan pertama : ";
cin>>n1;
cout<<"\nMasukkan bilangan kedua : ";
cin>>n2;
beda=n1-n2;
} };
hasil kelas: plus publik, minus publik
{
publik:
tampilan kosong()
{

cout<<"\nJumlah dari "<<jumlah1<<" dan "<<jumlah2<<"= "<<jumlah;


cout<<"\nPerbedaan "<<n1<<" dan "<<n2<<"= "<<perbedaan;
}
};
int utama()
{
hasil z;
z.getdata();
z.tambahkan();
z.sub();
z.tampilan();
}

Untuk Tambahan:
Masukkan angka pertama: 1

Masukkan angka kedua: 2

Untuk Pengurangan:
Masukkan angka pertama: 3

Masukkan angka kedua: 4

Jumlah 1 dan 2 = 3
Selisih 3 dan 4 = -1

5 .Pewarisan Hierarkis: - Mewarisi adalah metode pewarisan di mana satu atau lebih kelas turunan
diturunkan dari kelas basis umum.

#include<iostream.h> kelas A //Kelas Dasar {


publik:
int a,b;
batal getnumber()
{
cout<<"\n\nMasukkan Angka :\t"; cin>>a;
}
};
kelas B : A publik // Kelas Turunan 1
{
publik:
kotak kosong()
{
dapatkan nomor(); //Memanggil properti kelas Dasar cout<<"\n\n\tKuadrat dari bilangan :\t"<<(a*a);
}
};
kelas C : public A // Kelas Turunan 2
{
publik:
kubus kosong()
{
dapatkan nomor(); //Memanggil properti kelas Basis cout<<"\n\n\tKubus dari bilangan :::\t"<<(a*a*a);
}
};
int utama()
{
B b1; //b1 adalah objek dari kelas Turunan 1
b1.persegi(); // panggil fungsi anggota kelas BC c1; //c1 adalah objek dari Derived class 2
c1.cube(); // panggil fungsi anggota kelas C }
Masukkan Nomor : 2
Kuadrat bilangan : 4

Masukkan Nomor : 3

Kubus bilangan ::: 27


UNIT 4

Pointer, Fungsi Virtual dan Polimorfisme: Pendahuluan, Manajemen Memori, Operator baru dan Hapus
Operator, Pointer ke Objek, Pointer ini, Pointer ke
Kelas Turunan, Polimorfisme, kompilasi polimorfisme waktu, Jalankan polimorfisme waktu, Virtual
Fungsi, Fungsi Virtual Murni, Kelas Basis Virtual, Penghancur Virtual, Fungsi
Overloading, Operator overloading, Aturan untuk Operator overloading-operator biner dan unary.

Pengantar Manajemen Memori:

ALOKASI & DEALOKASI MEMORI DINAMIS (baru & hapus)


C menggunakan fungsi malloc() dan calloc() untuk mengalokasikan memori secara dinamis pada waktu
proses. Ia menggunakan fungsi free() untuk membatalkan alokasi memori yang dialokasikan secara dinamis.
C ++ mendukung fungsi-fungsi ini, ia mendefinisikan dua operator unary baru dan hapus yang melakukan tugas
mengalokasikan dan
membatalkan alokasi memori dengan cara yang lebih baik dan lebih mudah.
Objek dapat dibuat dengan menggunakan new , dan dihancurkan dengan menggunakan delete .

Objek data yang dibuat di dalam blok dengan new , akan tetap ada sampai secara eksplisit
dihancurkan dengan menggunakan delete .
operator baru:-
operator baru dapat digunakan untuk membuat objek jenis apa pun. Oleh karena itu, operator
baru mengalokasikan memori yang cukup untuk menyimpan data objek dan mengembalikan alamat
memori yang dialokasikan. Sintaksis:

pointer-variable = tipe data baru ;

Contoh: int *p = int baru;

>
Untuk membuat ruang memori untuk array: pointer-variable = new data-type[size];

Contoh: int *p = new int[10];

d hapus operator:
Jika variabel atau objek tidak lagi diperlukan atau diperlukan dihancurkan oleh operator " hapus ",
maka sejumlah memori dilepaskan untuk tujuan masa depan. Sintaksis:

hapus variabel penunjuk;

Misalnya: hapus p;

>
Jika kita ingin membebaskan file yang dialokasikan secara dinamis
array: hapus variabel-penunjuk [ukuran];
Program: tulis program untuk menemukan jumlah daftar bilangan bulat #include<iostream> using namespace
std; int utama()
{
int n,*p;
cout<<"Masukkan ukuran array:";
cin>>n;
p=new int[n];
cout<<"Masukkan daftar bilangan bulat"<<endl;
untuk(int i=0;i<n;i++)
cin>>p[i];
// logika untuk penjumlahan
int s=0;
untuk( int i=0;i<n;i++)
s=s+p[i];
cout<<"Jumlah elemen array adalah\n";
cout<<s;
hapus [ ]p;
kembali 0;
}
Masukkan ukuran larik:5
Masukkan daftar bilangan bulat
1 2345
Jumlah elemen array adalah
15

Operator Dereferensi Anggota:-


1. Pointer ke deklarator anggota ::*
2. Pointer ke operator anggota ->*
3. Pointer ke operator anggota .*
Pointer ke deklarator anggota ::*
Operator ini digunakan untuk mendeklarasikan pointer ke anggota kelas #include<iostream.h>
sampel kelas
{publik:
int x;
};
int utama()
{ sampel; //obyek
int sampel ::*p;//deklerasi pointer s.*p=10;
//benar
cout<<s.*p;
}
Keluaran:10
2 .Pointer ke operator anggota ->*
#sertakan<iostream.h>
sampel kelas
{
publik:
int x; batal
tampilan() {
cout<<"x="<<x<<endl;
}
};
int utama()
{
sampel; //obyek
sampel *ptr;
int contoh::*f=&sampel::x;
sx=10;
ptr=&s;
cout<<ptr->*f;
ptr->tampilan();
}

3 . Pointer ke operator anggota .*


#sertakan<iostream.h>
sampel kelas
{
publik:
int x;
};
int utama()
{

sampel; //obyek
int sampel ::*p;//deklarasi pointer
s.*p=10; //benar
cout<<s.*p;
}

Pointer ke Objek: Pointer ke objek berguna untuk membuat objek saat dijalankan. Untuk mengakses operator
panah anggota ( ) dan operator referensi atau tipuan (*) digunakan.
Deklarasi penunjuk .
namakelas*ptr
mantan:
barang *obj;
Di sini obj adalah penunjuk ke objek bertipe item.

barang kelas
{
kode int;
harga mengambang;
publik:
batal getdata(int a,float b)
{
kode=a;
harga=b;
}
batal tampilkan()
{
cout<<"kode:"<<kode<<"\n"<<"Harga:"<<harga<<endl;
}
};

Deklarasi objek dan penunjuk ke item kelas: item obj;


barang *ptr=&obj;
Anggota dapat diakses sebagai berikut.
a) Mengakses anggota menggunakan dot operator obj.getdata(101,77.7); obj.show();

b) menggunakan penunjuk
ptr->getdata(101,77.7);
ptr->tampilkan();
c) Menggunakan operator referensi dan operator titik (*ptr).getdata(101,77.7);
(*ptr).tampilkan();

Membuat array objek menggunakan pointer: item *ptr=new item[10];

Deklarasi di atas menciptakan ruang memori untuk array 10 objek bertipe item.

#sertakan<iostream.h> item kelas


{
kode int;
harga mengambang;
publik:
batal getdata(int a,float b) {
kode=a; harga=b;
}
batal tampilkan()
{
cout<<kode<<"\t"<<harga<<endl;
}
};
int utama()
{
int n;
int cd;
float pri;
cout<<"Masukkan jumlah objek yang akan dibuat :";
cin>>n;
item *ptr=item baru[n];
barang *p;
p=ptr;
untuk(int i=0;i<n;i++) {
cout<<"Masukkan data objek"<<i+1;
cout<<"\nMasukkan Kode :";cin>>cd;
cout<<"Masukkan harga:";cin>>pri;
p->getdata(cd,pri);
p++;
}
p=ptr;
cout<<"Data dalam berbagai objek adalah "<<endl;
cout<<"Sno\tKode\tHarga\n";
untuk(i=0;i<n;i++)
{
cout<<i+1<<"\t";
ptr->tampilkan();
ptr++;
}
kembali 0;
}

Pointer ke Kelas Turunan: Pointer dapat dideklarasikan ke kelas turunan. itu dapat digunakan untuk
mengakses anggota kelas dasar dan kelas turunan. Pointer kelas dasar juga dapat digunakan untuk menunjuk
ke objek kelas turunan tetapi hanya dapat mengakses anggota yang diwarisi dari kelas dasar.

#sertakan<iostream.h>
basis kelas
{
publik:
int a;
batal get_a(int x)
{
a=x;
}
batal display_a()
{
cout<<"Dalam basis"<<"\n"<<"a="<<a<<endl;
}
};
turunan kelas: basis publik
{
int b;
publik:
batal get_ab(int x,int y)
{
a=x;
b=y;
}
batal display_ab()
{
cout<<"Dalam Turunan "<<"\n"<<"a="<<a<<"\nb="<<b<<endl;
}
};
int utama()
{
dasar b;
basis *bptr;
bptr=&b;//menunjuk ke objek kelas dasar
bptr->get_a(100);
bptr->display_a();

turunan d;
turunan *dptr;
dptr=&d;//menunjuk ke objek dari kelas turunan

dptr->get_a(400);
dptr->display_a();
dptr->get_ab(300.200);
dptr->display_ab();

bptr=&d;//menunjuk ke objek dari kelas turunan bptr->get_a(400);


bptr->display_a();

kembali 0;
}
Keluaran:
Di dasar
a=100

Di dasar
a=400
Dalam Berasal
a=300
b=200
Di dasar
a=400

POLIMORFISME RUNTIME MENGGUNAKAN FUNGSI VIRTUAL


Pengikatan Statis & Dinamis
Polimorfisme berarti „satu nama‟ - „beberapa bentuk.
Fungsi anggota yang kelebihan beban 'dipilih' untuk dipanggil dengan mencocokkan argumen, baik tipe
maupun nomor. Informasi ini diketahui kompiler pada waktu kompilasi dan kompiler dapat memilih fungsi
yang sesuai untuk panggilan tertentu pada waktu kompilasi itu sendiri. Ini disebut Early Binding atau Static
Binding atau Static Linking . Juga dikenal sebagai polimorfisme waktu kompilasi . Pengikatan awal berarti
bahwa suatu objek terikat pada pemanggilan fungsinya pada waktu kompilasi.
Alangkah baiknya jika fungsi anggota yang sesuai dapat dipilih saat program sedang berjalan. Hal ini
dikenal sebagai polimorfisme runtime . C++ mendukung mekanisme yang dikenal sebagai fungsi virtual
untuk mencapai polimorfisme run time.
Saat runtime, ketika diketahui objek kelas apa yang sedang dipertimbangkan, versi fungsi yang sesuai
akan dipanggil. Karena fungsi dikaitkan dengan kelas tertentu lama setelah kompilasi, proses ini disebut
pengikatan terlambat. Ini juga dikenal sebagai pengikatan dinamis karena pemilihan fungsi yang sesuai
dilakukan secara dinamis pada saat dijalankan.

Fungsi Operator Maya


Kelebihan Kelebihan beban Fungsi
beban
FUNGSI VIRTUAL

Polimorfisme mengacu pada properti dimana objek milik kelas yang berbeda dapat menanggapi pesan
yang sama, tetapi bentuk yang berbeda. Oleh karena itu, persyaratan penting polimorfisme adalah kemampuan
untuk merujuk ke objek tanpa memperhatikan kelasnya.

Saat kita menggunakan nama fungsi yang sama di kelas dasar dan kelas turunan, fungsi di kelas bas
dideklarasikan sebagai virtual menggunakan kata kunci virtual sebelum deklarasi normalnya.

Ketika sebuah fungsi dibuat virtual, C++ menentukan fungsi mana yang akan digunakan pada saat runtime
berdasarkan tipe objek yang ditunjuk oleh pointer dasar, bukan tipe pointer. Jadi, dengan membuat pointer
dasar untuk menunjuk ke objek yang berbeda, kita dapat menjalankan versi yang berbeda dari fungsi virtual.

#sertakan<iostream.h>
Basis kelas
{
publik:
tampilan kosong()
{
cout<<"Basis Tampilan";
}
pertunjukan kekosongan virtual ()
{
cout<<”Tampilkan Basis”;
}
};
kelas Turunan: Basis publik
{
publik:
tampilan kosong()
{
cout<<”Tampilan Diturunkan”;
}
batal tampilkan()
{
cout<<”tampilkan turunan”;
}
};

batal utama()
{
Basis b;
Berasal d;
Basis *ptr;
cout<<"ptr menunjuk ke Basis";
ptr=&b;
ptr->tampilan(); //memanggil Basis
ptr->tampilkan(); //memanggil Basis
cout<<”poin ptr ke turunan”;
ptr=&d;
ptr->tampilan(); //memanggil Basis
ptr->tampilkan(); // turunan kelas
}
Keluaran:

ptr menunjuk ke Basis


Basis Tampilan
Tampilkan Basis

ptr menunjuk ke Derived

Basis Tampilan
Tampilkan Berasal

Ketika ptr dibuat untuk menunjuk ke objek d, pernyataan ptr->display(); hanya memanggil fungsi
terkait dengan Basis yaitu. Basis::tampilan()

dimana sebagai pernyataan

ptr->tampilkan();

memanggil versi turunan dari show(). Ini karena fungsi display() belum dibuat virtual di kelas Base.

Aturan Untuk Fungsi Virtual:

Saat fungsi virtual dibuat untuk mengimplementasikan pengikatan akhir, amati beberapa aturan dasar
yang memenuhi persyaratan kompiler.

1. Fungsi virtual harus menjadi anggota dari beberapa kelas.


2. Mereka tidak bisa menjadi anggota statis.
3. Mereka diakses dengan menggunakan pointer objek.
4. Fungsi virtual bisa menjadi teman kelas lain.
5. Fungsi virtual di kelas dasar harus didefinisikan, meskipun mungkin tidak digunakan.
6. Prototipe versi kelas dasar dari fungsi virtual dan semua versi kelas turunan harus identik. C++
menganggapnya sebagai fungsi kelebihan beban, dan mekanisme fungsi virtual diabaikan.
7. Kita tidak dapat memiliki konstruktor virtual, tetapi kita dapat memiliki destruktor virtual.
8. Sementara penunjuk dasar menunjuk ke semua jenis objek turunan, kebalikannya tidak benar. yaitu
kita tidak bisa menggunakan pointer ke kelas turunan untuk mengakses objek dari tipe kelas dasar.
9. Ketika pointer dasar menunjuk ke kelas turunan, menambah atau mengurangi itu tidak akan
membuatnya menunjuk ke objek berikutnya dari kelas turunan. Itu bertambah atau berkurang hanya
relatif terhadap tipe dasarnya. Oleh karena itu kita tidak boleh menggunakan metode ini untuk
memindahkan pointer ke objek berikutnya.
10. Jika fungsi virtual didefinisikan di kelas dasar, itu tidak perlu didefinisikan ulang di kelas turunan.
Dalam kasus seperti itu, panggilan akan memanggil fungsi dasar.
OVERLOADING

OVERLOATOR OPERATOR
C ++ memiliki kemampuan untuk menyediakan operator dengan arti khusus untuk tipe data. Mekanisme
pemberian arti khusus tersebut kepada operator dikenal sebagai operator overloading. Kami dapat
membebani semua operator kecuali yang berikut:
Operator akses anggota kelas (“.” Dan "
.*”) Operator resolusi cakupan “::”
Operator ukuran (sizeof)
Operator bersyarat
Untuk menentukan tugas tambahan ke operator, tentukan artinya dalam kaitannya dengan kelas tempat
operator diterapkan. Ini dilakukan dengan bantuan fungsi khusus, yang disebut fungsi operator. Proses
overloading melibatkan langkah-langkah berikut:
1. Buat kelas yang mendefinisikan tipe data yang akan digunakan dalam operasi kelebihan muatan.
2. Deklarasikan fungsi operator operator op() di bagian publik kelas. Ini mungkin fungsi anggota atau
fungsi teman.
3. Di sini op adalah operator yang akan kelebihan beban.
4. Tentukan fungsi operator untuk mengimplementasikan operasi yang diperlukan.
Mantan:
kompleks kompleks::operator+(kompleks c)
{
t kompleks;
t.nyata=nyata+c.nyata;
t.img=img+c.img;
kembali t;
}
Konsep Overloading Operator
Salah satu fitur unik C++ adalah Operator Overloading. Menerapkan overloading pada operator berarti,
operator yang sama dalam merespon berbeda. Misalnya operator + dapat digunakan sebagai operator gabungan
sekaligus operator tambahan.

Yaitu 2+3 berarti 5 (penjumlahan), dimana as


"2"+"3" berarti 23 (rangkaian).
Melakukan banyak tindakan dengan satu operator adalah kelebihan beban operator. Kami dapat
menetapkan fungsi yang ditentukan pengguna ke operator. Kita dapat mengubah fungsi operator, tetapi tidak
disarankan untuk mengubah fungsi sebenarnya dari operator. Kami tidak dapat membuat operator baru
menggunakan operatorloading ini.
Konsep overloading operator dapat diterapkan dalam dua area utama berikut (Manfaat)
1. Perpanjangan penggunaan operator
2. Konversi data
Aturan yang harus diikuti untuk kelebihan beban operator:-
1 .Hanya operator yang ada yang dapat kelebihan beban.
2 Operator .Overloaded harus memiliki setidaknya satu operan yang merupakan operator yang
ditentukan pengguna
3 .Kita tidak dapat mengubah arti dasar dari sebuah operator.
4 .Operator yang kelebihan beban harus mengikuti karakteristik minimum operator asli
5 .Saat menggunakan operator biner yang membebani melalui fungsi anggota, operan tangan kiri harus
menjadi objek dari kelas yang relevan
Jumlah argumen dalam daftar argumen operator yang kelebihan beban tergantung

1. Fungsi operator harus berupa fungsi anggota atau fungsi teman.


2. Jika fungsi operator adalah fungsi teman maka akan ada satu argumen untuk operator unary
& dua argumen untuk operator biner
3. Jika fungsi operator adalah fungsi anggota maka akan memiliki argumen Nol untuk operator
unary & satu argumen untuk operator biner

Overload Operator Unary


Operator unary berarti, operator yang bekerja pada operan tunggal. Misalnya, ++ adalah operator unary,
dibutuhkan operan tunggal (c++). Jadi, saat membebani operator unary, tidak diperlukan argumen (karena objek
itu sendiri dianggap sebagai argumen).

Sintaks untuk Operator Unary (Di dalam kelas)

simbol operator tipe kembali ( )


{
//badan fungsi
}

Mantan:
batal operator-()
{
nyata=-nyata;
img=-img;
}
Sintaks untuk Operator Unary (Di luar kelas)
tipe kembalian nama kelas::operator operatorsimbol( )
{
//badan fungsi
}

Contoh 1:-
membatalkan operator++()
{
penghitung++;
}

Contoh 2:-

batal kompleks::operator-()
{

nyata=-nyata;
img=-img;
}

Program sederhana berikut menjelaskan konsep unary overloading.


#sertakan < iostream.h >
#termasuk < conio.h >
// Operator Program
Fakta kelas yang berlebihan
{
int a;
publik:
fakta ()
{

a=0;
} fakta (int i) {
a=saya;
}
operator fakta!()
{
int f=1,i;
fakta t;
untuk (i=1;i<=a;i++)
{
f=f*i;
}
ta=f;
kembali t;
}
tampilan kosong()
{
cout<<"Faktoral"<<a;
}
};
batal utama()
{
int x;
cout<<"Masukkan Angka";
cin>>x;
fakta s(x),p;
p=!s;
p.tampilan();
}

Output untuk program di atas:


Masukkan angka 5
Faktorial dari bilangan tertentu 120

Penjelasan:
Kami telah mengambil '!' sebagai operator untuk membebani. Di sini nama kelas adalah fakta. Konstruktor
tanpa parameter mengambil nilai awal 'x' sebagai 0. Konstruktor dengan parameter untuk mengambil nilai 'x' .
Kami telah membuat dua objek satu untuk melakukan faktorial dan yang lainnya untuk mengembalikan
faktorial. Di sini jumlah parameter untuk fungsi kelebihan beban adalah 0. Faktorial adalah operator unary
karena beroperasi pada satu dataitem. operator overloading menemukan faktorial dari objek. Fungsi tampilan
untuk mencetak hasil.

Overloading Operator Unary -

Contoh 1:-
Tulis program untuk membebani operator unary -
#termasuk<iostream>
menggunakan namespace std;
kompleks kelas
{
float nyata,img;
publik:
kompleks();
kompleks(float x, float y);
tampilan kosong();
batal operator-();
};
kompleks::kompleks()
{
real=0;img=0;
}
kompleks::kompleks(float x, float y)
{
nyata=x;
img=y;
}
batal kompleks::tampilan()
{
int gambar=img;

jika(img<0)
{
gambar=-img;
cout<<nyata<<" -i"<<gambar<<endl;
}
kalau tidak
cout<<nyata<<" +i"<<img<<endl;
}
batal kompleks::operator-()
{
nyata=-nyata;
img=-img;
}
int utama()
{
kompleks c(1,-2);
c.tampilan();
cout<<"Setelah Unary - operasi\n";
-C;
c.tampilan();
}

Contoh 2:-
#sertakan<iostream.h>
menggunakan namespace std;
ruang kelas
{
int x,y,z;
publik:
batal getdata(int a,int b,int c);
tampilan kosong();
batal operator-();
};
ruang hampa :: getdata(int a,int b,int c)
{
x=a;
y=b;
z=c;
}
ruang kosong :: tampilan()
{
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl;
}
ruang kosong :: operator-()
{
x=-x;
y=-y;
z=-z;
}
int utama()
{
ruang s;
s.getdata(10,-20,30);
s.tampilan();
-S;
cout<<"setelah negasi\n";
s.tampilan();
}

Keluaran:
x=10
y=-20
z=30
setelah negasi
x=-10
y=20
z=-30

Dimungkinkan untuk membebani operator minus unary menggunakan fungsi teman sebagai berikut:
teman batal operator-(spasi & s);

Contoh 3:-
Operator minus unary menggunakan fungsi teman
#sertakan<iostream.h>
#sertakan<iostream.h>
menggunakan namespace std;
ruang kelas
{
int x,y,z;
publik:
batal getdata(int a,int b,int c);
tampilan kosong();
teman batal operator-(spasi &);
};
ruang hampa :: getdata(int a,int b,int c)
{
x=a;
y=b;
z=c;
}

ruang kosong :: tampilan()


{
cout<<x<<" "<<y<<" "<<z<<endl;
}
void operator- (spasi & s)
{
sx=-sx;
sy=-sy;
sz=-sz;
}

int utama()
{
ruang S;
S.getdata(10,-20,30);
S.tampilan();
-S;
cout<<"setelah negasi\n";
S.tampilan();
}

Keluaran:
10 -20 30
setelah negasi
-10 20-30

Overload Operator Biner


Operator biner berarti, operator yang bekerja pada dua operan. Misalnya, + adalah operator biner, dibutuhkan
operan tunggal (c+d). Jadi, saat membebani operator biner, dibutuhkan satu argumen (satu adalah objek itu
sendiri dan yang lainnya adalah argumen yang diteruskan).

Sintaks untuk Operator Biner (Di dalam kelas) simbol operator tipe-kembali(argumen) {
//badan fungsi
}
Sintaks untuk definisi Operator Biner (Di luar kelas) tipe-kembali nama kelas:: operator operator
simbol (argumen) {
//badan fungsi
}

Contoh operator kompleks+(kompleks s)


{
t kompleks;
t.nyata=nyata+s.nyata;
t.img=img+s.img;
kembali t;
}
Program berikut menjelaskan kelebihan operator biner:
#sertakan < iostream.h >
#termasuk < conio.h >
jumlah kelas
{
int a;
publik:
jumlah()
{
a=0;
}
jumlah(int i)
{
a=saya;
}
jumlah operator+(jumlah p1)
{
jumlah t;
ta=a+p1.a;
kembali t;
}
batal utama ()
{
cout<<"Masukkan Dua Angka :"
int a,b;
cin>>a>>b;
jumlah x(a),y(b),z;
z.tampilan();
z=x+y;
cout<<"setelah menggunakan operator \n";
z.tampilan();
getch();
}
Output untuk program di atas:
Masukkan dua angka 5 6
Setelah menerapkan operator
Jumlah dua bilangan 11
Penjelasan: Nama kelasnya adalah 'sum'. Kami telah membuat tiga objek dua untuk melakukan penjumlahan
dan yang lainnya untuk mengembalikan penjumlahan. '+' adalah operator biner yang beroperasi pada anggota
dua objek dan mengembalikan hasil yang merupakan anggota objek. Di sini jumlah parameternya adalah 1.
Jumlahnya ditampilkan dalam fungsi tampilan.

Buatlah program untuk membebani operator aritmatika pada bilangan kompleks menggunakan fungsi
anggota
#sertakan<iostream.h>
kompleks kelas
{
float nyata,img;
publik:
kompleks(){ }
kompleks(float x, float y)
{
nyata=x;
img=y;
}
operator kompleks+(kompleks c) batal tampilan();
};
kompleks kompleks::operator+(kompleks c)
{
suhu kompleks;
temp.real=nyata+c.nyata;
temp.img=img+c.img;
suhu kembali;
}
batal kompleks::tampilan()
{
int gambar=img;
Jika(img<0)
{
gambar=-gambar;
cout<<nyata<<"-i"<<gambar;
} else cout<<nyata<<”+i”<<img;
}
int utama()
{
kompleks c1,c2,c3;
c1=kompleks(2.5,3.5);
c2=kompleks(1.6,2.7);
c3=c1+c2;
c3.tampilan();
kembali 0;
}
Overloading Operator Biner Menggunakan Teman

1. Ganti deklarasi fungsi anggota dengan deklarasi fungsi teman di operator kompleks teman kelas +
(kompleks, kompleks)
2. Definisikan ulang fungsi operator sebagai berikut:
operator kompleks+(kompleks a, kompleks b)
{
return complex((a.x+bx),(a.y+by));
}
Tulis program untuk memuat operator aritmatika pada bilangan kompleks menggunakan fungsi friend
#include<iostream.h>
kompleks kelas
{
float nyata,img;
publik:
kompleks(){ }
kompleks(float x, float y)
{
nyata=x;
img=y;
}
operator kompleks teman + (kompleks);
tampilan kosong();
};
operator kompleks+(kompleks c1, kompleks c2)
{
suhu kompleks;
temp.real=c1.real+c2.real;
temp.img=c1.img+c2.img;
suhu kembali;
}
batal kompleks::tampilan()
{
Jika(img<0)
{
img=-img;
cout<<nyata<<”-i”<<img;
}
kalau tidak
cout<<nyata<<”+i”<<img;
}
int utama()
{
kompleks c1,c2,c3;
c1=kompleks(2.5,3.5);
c2=kompleks(1.6,2.7);
c3=c1+c2;
c3.tampilan();
kembali 0;
}
UNIT 5

Penanganan Templat dan Pengecualian:


Pendahuluan, Templat Kelas, Templat Kelas dengan Banyak Parameter, Templat Fungsi, Templat Fungsi
dengan Banyak Parameter, Templat Fungsi Anggota. Penanganan Pengecualian : Dasar-dasar
Penanganan Pengecualian, Jenis-jenis Pengecualian, Mekanisme Penanganan Pengecualian, Mekanisme
Pelemparan dan Penangkapan, Rethrowing Pengecualian, Menentukan Pengecualian.

PEMROGRAMAN UMUM ( Templat )


Pemrograman generik adalah pendekatan di mana tipe generik digunakan sebagai parameter dalam algoritma
sehingga mereka bekerja untuk berbagai tipe data dan struktur data yang sesuai.
Manfaat signifikan dari pemrograman berorientasi objek adalah penggunaan kembali kode yang
menghilangkan pengkodean yang berlebihan. Fitur penting dari C++ yang disebut template memperkuat
manfaat OOP ini dan memberikan fleksibilitas yang besar pada bahasa. Template mendukung pemrograman
generik, yang memungkinkan untuk mengembangkan komponen perangkat lunak yang dapat digunakan
kembali seperti fungsi, kelas, dll.. mendukung tipe data yang berbeda dalam satu kerangka kerja.

Konsep Templat
Perkenalan
Alih-alih menulis fungsi yang berbeda untuk tipe data yang berbeda, kita dapat mendefinisikan yang umum

fungsi. Misalnya

int maks(int a,int b); // Mengembalikan maksimum dua integer float


maks(float a,float b); // Mengembalikan maksimal dua float char max(char a,char b); // Mengembalikan
maksimal dua karakter (ini disebut sebagai kelebihan beban fungsi)
Namun, alih-alih menulis tiga fungsi berbeda seperti di atas, C++ menyediakan fasilitas yang disebut
"Templates". Dengan bantuan template, Anda hanya dapat menentukan satu fungsi umum sebagai berikut:

T maks(T a,T b); // T disebut tipe data generik

Fungsi template adalah cara membuat abstrak fungsi/kelas dengan membuat perilaku fungsi tanpa mengetahui
data apa yang akan ditangani oleh suatu fungsi. Dalam arti tertentu inilah yang dikenal sebagai "fungsi atau
pemrograman umum".
Fungsi template lebih fokus pada pemikiran algoritmik daripada cara spesifik tipe data tunggal. Misalnya,
Anda dapat membuat fungsi push stack dengan templat. Fungsi push ini dapat menangani operasi penyisipan
ke tumpukan pada tipe data apa pun daripada harus membuat fungsi push tumpukan untuk setiap jenis yang
berbeda.
Sintaksis:
templat < tipe kelas >
ret_type fun_name(daftar parameter)
{
--------------//badan fungsi

} //www.suhritsolutions.com

Fitur template:-
1. Ini menghilangkan kode yang berlebihan
2. Ini meningkatkan penggunaan kembali kode.
3. Ini memberikan fleksibilitas yang besar untuk bahasa
Template diklasifikasikan menjadi dua jenis. Mereka

1 .Fungsi template
2 .Kelas Templat.
Templat Fungsi
Templat yang dideklarasikan untuk fungsi disebut sebagai templat fungsi. Templat fungsi menentukan
bagaimana fungsi individu dapat dibangun.
Sintaks :
templat < tipe kelas,………>
ret _type fun_ name(argumen)
{
-----------------// badan fungsi
-----------------
}

TEMPLAT KELAS
Templat yang dideklarasikan untuk kelas disebut templat kelas. Sebuah template kelas menentukan
bagaimana masing-masing kelas dapat dibangun mirip dengan spesifikasi kelas normal. Kelas-kelas ini
memodelkan kelas generik yang mendukung operasi serupa untuk tipe data yang berbeda. Bentuk Umum
Templat Kelas

template <kelas T> kelas nama kelas {

…; ….
}

Kelas yang dibuat dari template kelas disebut kelas template. Sintaks untuk mendefinisikan objek dari kelas
templat adalah:

classname<type> objectname(arglist);

#sertakan<iostream.h>
#sertakan<conio.h>
templat pertukaran kelas <kelas T>
{
T a, b;
publik:
tukar(T x,T y)
{
a=x;
b=y;
}
membatalkan swapab()
{
T suhu;
suhu=a;
a=b;
b=temp;
}
batalkan showdata()
{
cout<<a<<b;
}
};

batal utama()
{
int m,n;
mengapung m1,n1;
cout<<"Masukkan Nilai Integer";
cin>>m>>n;
cout<<”Masukkan nilai mengambang”;
cin>>m1>>n1;
tukar<int> c1(m,n);
tukar<float> c2(m1,n1);
c1.swapab();
c1.showdata();
c2.swapab();
c2.showdata();
}

Templat Kelas dengan Beberapa Parameter

Sintaksis:

template <kelas T1, kelas T2,….> kelas-nama kelas


{}

#include<iostream.h> template <kelas T1,kelas T2> tes kelas


{
T1a;
T2 b;
publik:

Tes(T1 x,T2 y)
{ a=x; b=y;
}
batal tampilkan()
{
cout<<a<<b;
}
};
batal utama()
{
Uji<float,int> uji1(1,23,123);
Tes<int,char> tes2(100,'w');
test1.show();
test2.show();
}

TEMPLATE FUNGSI
Seperti template kelas, kita juga bisa mendefinisikan template fungsi yang akan digunakan untuk membuat
keluarga fungsi dengan tipe argumen yang berbeda.

Formulir Umum:
templat <kelas T>
nama-fungsi tipe-kembali (argumen tipe T)
{}
#sertakan<iostream.h>
templat<kelas T>
batal menukar (T &x, T &y)
{
T suhu = x;
x=y;
y=suhu;
}
batal menyenangkan(int m,int n,float a,float b)
{
cout<<m<<n;
tukar(m,n);
cout<<m<<n;
cout<<a<<b;
tukar(a,b);
cout<<a<<b;
}
int utama()
{
menyenangkan(100.200,11,22,33,44);
kembali 0;
}
Contoh 2:-
#sertakan < iostream.h >
#termasuk < conio.h >
templat
T maks(T a, T b)
{
jika(a>b)
kembalikan;
kalau tidak
kembali b;
}
batal utama( )
{
char ch1,ch2,ch3;
cout<<"masukkan dua karakter"<< ch2<< ch3;
cin>>ch2>>ch3;
d=maks(ch2,ch3);
cout<<”maks(ch2,ch3)”<<ch1;
int a,b,c;
cout<<"masukkan dua bilangan bulat:";
cin>>a>>b;
c=maks(a,b);
cout<<"max(a,b):"<<c<<endl;
mengapung f1,f2,f3;
cout<<"masukkan dua float< f1f2 >:";
cin>>f1,f2;
f3=maks(f1,f2);
cout<<”maks(f1,f2):”<<f3;
}

keluaran:
masukkan dua karakter: A,B
maks(ch2,ch3):B
masukkan dua bilangan bulat: 20,10
maks (a,b) :20
masukkan dua pelampung :20.5,30.9
maks (f1,f2) :30,9

Template Fungsi dengan Beberapa Parameter


Seperti kelas template, kita bisa menggunakan lebih dari satu tipe data generik dalam pernyataan template,
menggunakan daftar yang dipisahkan koma seperti yang ditunjukkan di bawah ini:
template <kelas T1, kelas T2,.> fungsi tipe kembalian-
nama(argumen tipe T1,T2.) {

#sertakan<iostream.h>
#termasuk<string.h>
templat<kelas T1, kelas T2> tampilan kosong(T1 x,T2 y) {
cout<<x<<y;
}
int utama()
{
tampilkan(1999,”EBG”);
tampilan(12.34,1234);
kembali 0;
}

Penanganan pengecualian
Pengecualian: Pengecualian adalah anomali runtime atau kondisi tidak biasa yang mungkin ditemui program
saat mengeksekusi .Anomali mungkin termasuk kondisi seperti pembagian dengan nol, mengakses array di
luar batasnya atau kehabisan memori atau ruang disk. Ketika sebuah program menemukan kondisi
pengecualian, itu harus diidentifikasi dan ditangani.
Pengecualian menyediakan cara untuk mentransfer kontrol dari satu bagian program ke bagian lainnya.
Penanganan pengecualian C++ dibangun di atas tiga kata kunci: coba, tangkap, dan lempar.

Jenis pengecualian: Ada dua jenis pengecualian


1. Pengecualian sinkron
2. Pengecualian asinkron

1. Pengecualian sinkron: Kesalahan seperti "Indeks di luar jangkauan" dan "over flow" adalah pengecualian
sinkron
2. Pengecualian asinkron: Kesalahan yang dihasilkan oleh peristiwa apa pun di luar kendali program disebut
pengecualian asinkron

Tujuan penanganan pengecualian adalah untuk menyediakan sarana untuk mendeteksi dan melaporkan
keadaan luar biasa

Mekanisme Penanganan Pengecualian:


Pengecualian dikatakan dilemparkan ke tempat di mana beberapa kesalahan atau kondisi abnormal terdeteksi.
Pelemparan akan menyebabkan aliran program normal dibatalkan, dalam pengecualian yang dinaikkan.
Pengecualian dilemparkan secara terprogram, pemrogram menentukan kondisi lemparan.
Dalam pengecualian yang ditangani, eksekusi program akan dilanjutkan pada blok kode yang ditunjuk,
yang disebut blok tangkapan, yang melingkupi titik lemparan dalam hal eksekusi program. Blok tangkapan
dapat, dan biasanya, terletak di fungsi yang berbeda dari titik lempar.

Penanganan pengecualian C++ dibangun di atas tiga kata kunci: coba, tangkap, dan lempar.
Try digunakan untuk mengawali blok pernyataan yang dapat menghasilkan pengecualian. Blok pernyataan ini dikenal
sebagai blok try. Ketika pengecualian terdeteksi, ia dilempar dengan menggunakan pernyataan lemparan di blok try. Blok
catch menangkap pengecualian yang dilempar oleh pernyataan throw di blok try dan menanganinya dengan tepat.
#termasuk<iostream>
menggunakan namespace std;
int utama()
{
int a,b;
cout<<"Masukkan sembarang dua bilangan bulat";
cin>>a>>b;
int x=ab;
mencoba
{
jika(x!=0)
{

cout<<"Hasil(a/x)="<<a/x<<endl;
}
kalau tidak
{ lempar x;
}
}
tangkap (int ex)
{
cout<<"Pengecualian tertangkap: Bagi Dengan Nol \n";
}
}

MEKANISME PEMBUATAN
Ketika pengecualian terdeteksi, itu dapat dimunculkan dengan menggunakan pernyataan lemparan dalam salah
satu dari bentuk berikut
lempar(pengecualian); membuang pengecualian;

melemparkan;
MEKANISME PENANGKAPAN:

Catch block adalah seperti di bawah ini


Tangkap(tipe data arg) {
//pernyataan untuk penanganan
//pengecualian
}
Beberapa pernyataan tangkapan:
mencoba
{
// coba blok
}
tangkap (tipe data1 arg)
{
// tangkap blok1
}
tangkap (tipe data2 arg)
{
// tangkap blok2
} catch(tipe dataN arg)
{
// tangkap blokN
}

• Saat pengecualian dilemparkan, penangan pengecualian dicari untuk mendapatkan kecocokan yang
sesuai.
• Ada kemungkinan bahwa argumen dari beberapa pernyataan tangkapan cocok dengan jenis
pengecualian. Dalam kasus seperti itu, penangan pertama yang cocok dengan tipe pengecualian
dijalankan

Tulis Program untuk menangkap beberapa pernyataan tangkapan


#sertakan<iostream.h>
uji batal (int x)
{
mencoba
{
jika(x==1) lempar x;
kalau tidak
if(x==0) throw 'x';
kalau tidak
if(x==-1) lempar 1.0;
cout<<"akhir percobaan blok"<<endl;
}
tangkap (karakter c)
{
cout<<"menangkap karakter"<<endl;
}
tangkap(int m)
{

cout<<"menangkap bilangan bulat"<<endl;


}
tangkap (d ganda)
{

cout<<"menangkap dua"<<endl;
}
}
int utama()
{
tes(1);
tes(0);
tes(-1);
tes(2);
kembali 0;
}

Keluaran:
menangkap bilangan bulat
menangkap karakter
menangkap ganda
akhir blok percobaan

Tangkap Semua Pengecualian:

semua kemungkinan jenis pengecualian dan karena itu mungkin tidak dapat merancang penangan tangkapan
independen untuk menangkapnya. Dalam keadaan seperti itu, kita dapat memaksakan pernyataan catch untuk
menangkap semua pengecualian, bukan tipe tertentu saja.

menangkap(…)
{}

Tulis Program untuk menangkap semua pengecualian


#sertakan<iostream.h>
uji batal (int x)
{
mencoba
{
jika(x==0) lempar x;
if(x==0) throw 'x';
if(x==-1) lempar 1.0;
}
menangkap(...)
{
cout<<"terdapat pengecualian"<<endl;
}
}
int utama()
{
tes(-1);
tes(0);
tes(1);

kembali 0;
}

Melontarkan kembali Pengecualian:

Dimungkinkan untuk meneruskan pengecualian yang ditangkap oleh blok tangkap lagi ke penangan
pengecualian lain. Ini saya dikenal sebagai Re-throwing.

#termasuk <iostream>
menggunakan namespace std;
membatalkan MyHandler()
{ mencoba {
melempar "halo";
}
tangkap (const char*)
{
cout<<"Tertangkap pengecualian di dalam MyHandler\n";
melemparkan; // rethrow char* keluar dari fungsi
}
}
int utama()
{ cout<<"Awal utama. ."<<endl; coba
{
MyHandler();
}
tangkap(const char*)
{
cout<<"Tertangkap pengecualian di dalam Main\n";
}
cout<<"Ujung Utama";
kembali 0;
}

Menentukan Pengecualian:
Spesifikasi pengecualian membatasi fungsi untuk melempar beberapa pengecualian yang ditentukan hanya
dengan menggunakan throw(exception list) di header fungsi.
Bentuk umum
Ketik function_name(argument list) throw(exceptions -list)
{
Pernyataan
mencoba {
pernyataan
}

#termasuk <iostream>
menggunakan namespace std;
uji batal(int x) lempar(int,float,char)
{
beralih (x)
{
kasus 1: lempar x;
merusak;
kasus 2: lempar 'x';
merusak;
kasus 3:melempar ganda(x);
merusak;
kasus 4: lempar pelampung(x);
merusak;
}
}
int utama()
{
mencoba
{
test(4);//test(4) menyebabkan pemutusan abnormal
}

tangkap (int i)
{
cout<<"Tertangkap pengecualian tipe int\n";
}
tangkap (mengambang f)
{
cout<<"Pengecualian tipe float yang tertangkap\n";
}
tangkap (karakter c)
{
cout<<"Pengecualian tipe karakter yang tertangkap\n";
}
menangkap (ganda saya)
{
cout<<"Tertangkap Pengecualian Tipe Ganda\n";
}

kembali 0;
}

Anda mungkin juga menyukai