Anda di halaman 1dari 66

Sejarah C++

Tahun 1978, Brian W. Kerninghan & Dennis M. Ritchie dari AT & T Laboratories
engebang!an bahasa B en"adi bahasa #. Bahasa B $ang dici%ta!an o&eh Ken Tho%son
sebenarn$a eru%a!an %engebangan dari bahasa B#'L ( Basic #obined 'rograing
Language ) $ang dici%ta!an o&eh Martin Richard.
*e"a! tahun 198+, bahasa # ban$a! diguna!an %erogra di ,ro%a $ang sebe&un$a
engguna!an bahasa B dan B#'L. Da&a %er!ebangann$a, bahasa # en"adi bahasa %a&ing
%o%u&er diantara bahasa &ainn$a, se%erti 'A*#AL, BA*-#, ./RTRA0.
Tahun 1989, dunia %erograan # enga&ai %eristi1a %enting dengan di!e&uar!ann$a
standar bahasa # o&eh Aerican 0ationa& *tandards -nstitute (A0*-). Bahasa # $ang
dici%ta!an Kerninghan & Ritchie !eudian di!ena& dengan naa A0*- #.
Mu&ai a1a& tahun 198+, B"arne *troustru% dari AT & T Be&& Laboratories u&ai
engebang!an bahasa #. 'ada tahun 1982, &ahir&ah secara resi bahasa baru hasi&
%engebangan # $ang di!ena& dengan naa #33. *ebenarn$a bahasa #33 enga&ai dua taha%
e4o&usi. #33 $ang %ertaa, diri&is o&eh AT&T Laboratories, dinaa!an cfront. #33 4ersi !uno
ini han$a beru%a !o%i&er $ang enter"eah!an #33 en"adi bahasa #.
'ada e4o&usi se&an"utn$a, Bor&and -nternationa& -nc. engebang!an !o%i&er #33 en"adi
sebuah !o%i&er $ang a%u engubah #33 &angsung en"adi bahasa esin (asseb&$). *e"a!
e4o&usi ini, u&ai tahun 199+ #33 en"adi bahasa berorientasi ob$e! $ang diguna!an o&eh
sebagian besar %erogra %ro5essiona&.
*tru!tur Bahasa #33
#ontoh 1 6 7asi& 6
88 $ 5irst %rogra in #33 7e&&o Wor&d9
:inc&ude ;iostrea.h<
int ain ()
=
cout ;; >7e&&o Wor&d9>?
return +?
@
*isi !iri eru%a!an source code, $ang da%at diberi naa hi1or&d.c%% dan sisi !anan ada&ah
hasi&n$a sete&ah diA!o%i&e dan diAe!se!usi.
1
'rogra diatas eru%a!an sa&ah satu %rogra %a&ing sederhana da&a #33, teta%i da&a
%rogra tersebut engandung !o%onen dasar $ang se&a&u ada %ada setia% %erograan #3
3. Bi!a di&ihat satu %ersatu 6
// my first program in C++
Baris ini ada&ah !oentar. seua baris $ang dia1a&i dengan dua garis iring (//) a!an
diangga% sebagai !oentar dan tida! a!an ber%engaruh terhada% %rogra. Da%at
diguna!an o&eh %rograer untu! en$erta!an %en"e&asan sing!at atau obser4asi
$ang ter!ait dengan %rogra tersebut.
#include <iostream.h>
Ka&iat $ang dia1a&i dengan tanda (#) ada&ah are %re%rocessor directi4e. Bu!an
eru%a!an baris !ode $ang die!se!usi, teta%i indi!asi untu! !o%i&er. Da&a !asus ini
!a&iat #include <iostream.h> eberitahu!an %re%rocessor !o%i&er untu!
en$erta!an header 5i&e standard iostream. .i&e s%esi5i! ini "uga terasu! &ibrar$
de!&arasi standard -8/ %ada #33 dan 5i&e ini diserta!an !arena 5ungsiA5ungsin$a a!an
diguna!an nanti da&a %rogra.
int main ()
Baris ini encoco!an %ada a1a& dari de!&arasi 5ungsi main. 5ungsi main eru%a!an
titi! a1a& diana se&uruh %rogra #33 a!an u&ai die!se!usi. Di&eta!an dia1a&,
ditengah atau dia!hir %rogra, isi dari 5ungsi ain a!an se&a&u die!se!usi %ertaa
!a&i. 'ada dasarn$a, se&uruh %rogra #33 ei&i!i 5ungsi main.
main dii!uti o&eh se%asang tanda !urung () !arena eru%a!an 5ungsi. %ada #33,
seua 5ungsi dii!uti o&eh se%asang tanda !urung () diana, da%at berisi arguen
dida&an$a. -si dari 5ungsi main selanjutnya akan mengikuti,berupa
deklarasi formal dan dituliskan diantara kurung kurawal ({}), se%erti
da&a contoh.
cout << "ello !orld""
-ntru!si ini eru%a!an ha& $ang %a&ing %enting da&a %rogra contoh. cout eru%a!an
standard out%ut strea da&a #33 (biasan$a onitor). cout dide!&arasi!an da&a
header 5i&e iostrea.h, sehingga agar da%at diguna!an a!a 5i&e ini harus diserta!an.
'erhati!an setia% !a&iat dia!hiri dengan tanda seico&on (;). Kara!ter ini
enanda!an a!hir dari instru!si dan harus diserta!an %ada setia% a!hir instru!si
%ada %rogra #33 ana%un.
return #"
-ntru!si return en$ebab!an 5ungsi main() bera!hir dan engeba&i!an !ode $ang
engi!uti instru!si tersebut, da&a !asus ini #. -ni eru%a!an cara $ang %a&ing sering
diguna!an untu! enga!hiri %rogra.
Tida! seua baris %ada %rogra ini e&a!u!an a!si. Ada baris $ang han$a berisi !oentar
(dia1a&i 88), baris $ang berisi instru!si untu! %re%rocessor !o%i&er (Cang dia1a&i
#),!eudian baris $ang eru%a!an inisia&isasi sebuah 5ungsi (da&a !asus ini, 5ungsi main)
dan baris $ang berisi instru!si (se%erti, cout <<), baris $ang tera!hir ini diserta!an da&a
b&o! $ang dibatasi o&eh !urung !ura1a& ($%) dari 5ungsi main.
2
*tru!tur %rogra da%at ditu&is!an da&a bentu! $ang &ain agar &ebih udah dibaca, contoh 6
int ain ()
=
cout ;; > 7e&&o Wor&d >?
return +?
@
Atau da%at "uga ditu&is!an 6
int ain () = cout ;; > 7e&&o Wor&d >? return +? @
Da&a satu baris dan ei&i!i arti $ang saa dengan %rograA%rogra sebe&un$a. %ada #33
%ebatas antar instru!si ditandai dengan seico&on (?) %ada setia% a!hir instru!si.
#ontoh D 6 7asi& 6
88 $ second %rogra in #33 ello !orld& '(m a C++ program
:inc&ude ;iostrea.h<
int ain ()
=
cout ;; >7e&&o Wor&d9 >?
cout ;; >-E a #33 %rogra>?
return +?
@
)omentar
Koentar ada&ah bagian dari %rogra $ang diabai!an o&eh !o%i&er. Tida! e&a!sana!an a!si
a%a%un. Mere!a berguna untu! eung!in!an %ara %rograer untu! easu!an catatan
atau des!ri%si tabahan engenai %rogra tersebut. #33 ei&i!i dua cara untu! enu&is!an
!oentar 6
88 Koentar baris
8F Koentar B&o! F8
Koentar baris, a!an engabai!an a%a%un u&ai dari tanda (88) sa%ai a!hir dari baris $ang
saa. Koentar B&o!, a!an engabai!an a%a%un $ang berada diantara tanda 8F dan F8.
3
Gariabe&, ti%e data, !onstanta
Hntu! da%at enu&is %rogra $ang da%at ebantu en"a&an!an tugasAtugas !ita, !ita harus
engena& !onse% dari *aria+el. *ebagai i&ustrasi, ingat D buah ang!a, ang!a %ertaa ada&ah
2 dan ang!a !edua ada&ah D. *e&an"utn$a tabah!an 1 %ada ang!a %ertaa !eudian hasi&n$a
di!urangi ang!a !edua (diana hasi& a!hirn$a ada&ah I).
*e&uruh %roses ini da%at die!s%resi!an da&a #33 dengan serang!aian instru!si sbb 6
a J 2?
b J D?
a J a 3 1?
resu&t J a A b?
Be&as ini eru%a!an satu contoh $ang sangat sederhana !arena !ita han$a engguna!an D
ni&ai integer $ang !eci&, teta%i !o%uter da%at en$i%an "utaan ang!a da&a 1a!tu $ang
bersaaan dan da%at e&a!u!an o%erasi ateati!a $ang ruit.

Karena itu, !ita da%at ende5inisi!an 4ariab&e sebagai bagian dari eor$ untu! en$i%an
ni&ai $ang te&ah ditentu!an. *etia% 4ariab&e eer&u!an identifier $ang da%at
ebeda!ann$a dari 4ariab&e $ang &ain, sebagai contoh dari !ode diatas identi5ier
4ariabe&n$a ada&ah a, + dan result, teta%i !ita da%at ebuat naa untu! 4ariabe& se&aa
asih eru%a!an identi5ier $ang benar.

'dentifiers
-denti5ier ada&ah untaian satu atau &ebih huru5, ang!a, atau garis ba1ah ( K ). 'an"ang dari
identi5ier, tida! terbatas, 1a&au%un untu! bebera%a !o%i&er han$a LD !ara!ter %ertaa
sa"a $ang dibaca sebagai identi5ier (sisan$a diabai!an). -denti5ier harus se&a&u dia1a&i
dengan huru5 atau garis ba1ah ( , ).
Ketentuan &ainn$a $ang harus di%erhati!an da&a enentu!an identi5ier ada&ah tida! bo&eh
engguna!an -ey .ord dari bahasa #33. Dia1ah ini ada&ah -ey 1ord da&a #33 6
asm auto +ool +rea- case
catch char class const const,cast
continue default delete do dou+le
dynamic,cast else enum e/plicit e/tern
false float for friend goto
if inline int long muta+le
namespace ne. operator pri*ate protected
pu+lic register reinterpret,cast return short
signed si0eof static static,cast struct
s.itch template this thro. true
try typedef typeid typename union
unsigned using *irtual *oid *olatile
4
.char,t
Se+agai tam+ahan1 represetasi alternatif dari operator1 tida- dapat diguna-an se+agai
identifier. Contoh 2
and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq,
xor, xor_eq
catatan2 Bahasa #33 ada&ah bahasa $ang >case sensiti4e>, ini berarti identi5ier $ang
ditu&is!an dengan huru5 !a%ita& a!an diangga% berbeda dengan identi5ier $ang saa teta%i
ditu&is!an dengan huru5 !eci&, sabagai contoh 6 4ariabe& 34S567 tida! saa dengan 4ariab&e
result atau%un 4ariabe& 3esult.

Ti%e Data
Ti%e data $ang ada %ada #33, beri!ut ni&ai !isaran $ang da%at dire%resentasi!an 6

DATA TYPES
0ae B$tesF Descri%tion RangeF
char 1
character or integer 8 bits
&ength.
signed2 A1D8 to 1D7
unsigned2 + to D22
short D integer 1M bits &ength.
signed2 ALD7M8 to LD7M7
unsigned2 + to M22L2
long I integer LD bits &ength.
signed2AD1I7I8LMI8 to
D1I7I8LMI7
unsigned2 + to ID9I9M7D92
int F
-nteger. -ts &ength traditiona&&$
de%ends on the &ength o5 the
s$steEs Word type, thus in
M*D/* it is 1M bits &ong, 1hereas
in LD bit s$stes (&i!e Windo1s
9N8D+++80T and s$stes that
1or! under %rotected ode in
N8M s$stes) it is LD bits &ong (I
b$tes).
*ee short, long
float I 5&oating %oint nuber. L.Ie 3 8 A L8 (7 digits)
dou+le 8
doub&e %recision 5&oating %oint
nuber.
1.7e 3 8 A L+8 (12 digits)
long
dou+le
1+
&ong doub&e %recision 5&oating
%oint nuber.
1.De 3 8 A I9LD (19 digits)
+ool 1
Boo&ean 4a&ue. -t can ta!e one o5
t1o 4a&ues6 true or false 0/T,6
this is a t$%e recent&$ added b$
the A0*-A#33 standard. 0ot a&&
co%i&ers su%%ort it. #onsu&t
section boo& t$%e 5or
co%atibi&it$ in5oration.
true or alse
5
.char,t D
Wide character. -t is designed as
a t$%e to store internationa&
characters o5 a t1oAb$te
character set. 0/T,6 this is a
t$%e recent&$ added b$ the
A0*-A#33 standard. 0ot a&&
co%i&ers su%%ort it.
1ide characters
8e-larasi *aria+el
Hntu! engguna!an 4ariabe& %ada #33, !ita harus ende!&arasi!an ti%e data $ang a!an
diguna!an. *inta!s %enu&isan de!&arasi 4ariabe& ada&ah dengan enu&is!an ti%e data $ang a!an
diguna!an dii!uti dengan identi5ier $ang benar, contoh 6
int a;
float mynumber;
Bi!a a!an engguna!an ti%e data $ang saa untu! bebera%a identi5ier a!a da%ata
ditu&is!an dengan engguna!an tanda !oa, contoh 6
int a, b, c;
Ti%e data integer (char, short, lon! dan int) da%at beru%a signed atau unsigned
tergantung dari !isaran ni&ai $ang a!an dire%resentasi!an. Di&a!u!an dengan en$erta!an
!e$1ord si!ned atau unsi!ned sebe&u ti%e data, contoh 6
unsigned short NumberOfSons;
signed int MyAccountalance;
Bi!a tida! ditu&is!an, a!a a!an diangga% sebagai si!ned.
#ontoh L 6
7asi& 6
// operating with variables
#include !iostream"h# "
int main $%
&
// declaring variables:
int a, b;
int result;
// process:
a ' (;
b ' );
a ' a * +;
result ' a , b;
'nisialisasi 9aria+el
Keti!a ende!&arasi!an 4ariabe& &oca&, !ita da%at eberi!an ni&ai tertentu. *inta!s
%enu&isan sbb 6
6
type identifier # initial_value ;
Misa&!an !ita a!an ende!&arasi!an 4ariabe& int dengan naa a $ang berni&ai $, a!a da%at
ditu&is!an 6
int a ' -;
Atau dengan cara lainnya, yaitu menyertakan nilai yang akan diberikan dalam tanda ():
type identifier (initial_value) ;
Contoh :
int a $-%;
6ing-up 9aria+el
'ada #33, !ita da%at ende!&arasi!an 4ariab&e dibagian ana sa"a dari %rogra, bah!an
diantara D !a&iat %erintah.
*aria+el :lo+al da%at
diguna!an untu! setia%
bagian dari %rogra,
au%un 5ungsi, 1a&au%un
dide!&arasi!an dia!hir
%rogra.
Ling!u% dari *aria+le
local terbatas. 7an$a
ber&a!u diana 4ariab&e
tersebut dide!&arasi!an.
Bi!a dide!&arasi!an dia1a&
5ungsi (se%erti da&a
main) a!a &ing!u% dari
4ariab&e tersebut ada&ah
untu! se&uruh 5ungsi main.
*e%erti contoh diatas, "i!a terda%at 5ungsi &ain $ang ditabah!an %ada ain(), a!a
4ariab&e &oca& $ang dide!&arasi!an da&a main tida! da%at diguna!an %ada 5ungsi &ainn$a dan
seba&i!n$a.
'ada #33, &ing!u% 4ariab&e &oca& ditandai dengan b&o! diana 4ariab&e tersebut dide!&arasi!an
( b&o! tersebut ada&ah se!u%u&an instru!si da&a !urung !ura1a& $% ). Bi!a
dide!&arasi!an da&a 5ungsi tersebut, a!a a!an ber&a!u sebagai 4ariab&e da&a 5ungsi
tersebut, "i!a dide!&arasi!an da&a sebuah %eru&angan, a!a han$a ber&a!u da&a
%eru&angan tersebut, dan seterusn$a.
)onstanta 2 6iterals.
7
Konstanta ada&ah e!s%resi dengan ni&ai $ang teta%. Terbagi da&a 0i&ai -nteger, 0i&ai
.&oatingA'oint, Kara!ter and *tring.
;ilai 'nteger
Meru%a!an ni&ai !onstanta nueri! $ang engAidenti5i!asi!an ni&ai integer decia&. Karena
eru%a!an ni&ai nueric, a!a tida! eer&u!an tanda !uti% (%) au%un !ara!ter !husus
&ainn$a. #ontoh 6
+../
.-.
,).0
#33 eung!in!an !ita untu! e%erguna!an ni&ai o!ta& (base 8) dan he!sadesia& (base 1M).
Bi!a engguna!an octa& a!a harus dia1a&i dengan !ara!ter # (!ara!ter no&), dan untu!
he!sadesia& dia1a&i dengan !ara!ter #/ (no&, N). #ontoh 6

.( // decimal
-++0 // octal
-12b // hexadecimal
Dari contoh diatas, se&uruhn$a ere%resentasi!an ni&ai $ang saa 6 72.
;ilai <loating =oint
Mere%resentasi!an ni&ai desia& dan8atau e!s%onen, terasu! titi! desia& dan !ara!ter e
(Cang ere%resentasi!an Odi!a&i 1+ %ang!at nP , diana n eru%a!an ni&ai integer) atau
!eduan$a. #ontoh 6

0"+2+(3 // 3.1415
/"-)e)0 // !."# x 1"
#3
+"/e,+3 // 1.! x 1"
$1
0"- // 3."
)ara-ter dan String
Meru%a!an !onstanta nonAnueri!, #ontoh 6
454
4p4
67ello world6
67ow do you do86
Hntu! !ara!ter tungga& ditu&is!an diantara !uti% tungga& (E) dan untu! untaian bebera%a
!ara!ter, ditu&is!an diantara !uti% ganda (>).
Konstanta !ara!ter dan string ei&i!i bebera%a ha& !husus, se%erti escape codes.
&n
newline
&r
carriage return
&t
tabulation
&'
vertical tabulation

&b
back!"ace
&
"age #eed
&a
alert $bee"%
&(
!ingle &uote! $4%
&%
double &uote! $6%
&)
&ue!tion $8%
&&
inverted !la!h $9%
#ontoh 6
49n4
49t4
6:eft 9t ;ight6
6one9ntwo9nthree6
*ebagai tabahan, !ita da%at enu&is!an !ara!ter a%a%un dengan enu&is!an $ang dii!uti
dengan !ode A*#--, enge!s%resi!an sebagai octa& (contoh, &*+ atau &"$% maupun
heksadesimal (contoh, &x*$ atau &x",).
)onstanta 8efine (#define)
Kita da%at ende5inisi!an sendiri naa untu! !onstanta $ang a!an !ita %erguna!an, dengan
engguna!an %re%rocessor directi4e #deine. Dengan 5orat 6
#deine identifier value
#ontoh 6
#define <= 0"+2+(3)/(
#define N>?:=N> 49n4
#define ?=@A7 +--
*ete&ah dide5inisi!an se%erti diatas, a!a !ita da%at engguna!ann$a %ada se&uruh %rogra
$ang !ita buat, contoh 6
circle ' ) B <= B r;
cout !! N>?:=N>;
'ada dasarn$a, $ang di&a!u!an o&eh !o%i&er !eti!a ebaca #define ada&ah engganti!an
&itera& $ang ada (da&a contoh, =', ;4!6';4 atau !'87) dengan ni&ai $ang te&ah
diteta%!an (>.?@?ABCDA, (En( dan ?##). :de5ine bu!an eru%a!an instru!si, o&eh sebab itu
tida! dia!hiri dengan tanda seico&on (?).
8e-larasi )onstanta (const)
Dengan %re5iN const !ita da%at ende!&arasi!an !onstanta dengan ti%e $ang s%esi5i!
se%erti $ang !ita ingin!an. contoh 6
'
const int width ' +--;
const char tab ' 49t4;
const 5ip ' +)22-;
Bi!a ti%e data tida! disebut!an, a!a !o%i&er a!an engAasusi!an sebagai int.
Fperator
/%eratorAo%erator $ang disedia!an #33 beru%a !e$1ord atau !ara!ter !husus. /%eratorA
o%erator ini cu!u% %enting untu! di!etahui !arena eru%a!an sa&ah satu dasar bahasa #33.
Gssignation (#).
/%erator assignation diguna!an untu! eberi!an ni&ai !e suatu 4ariab&e.
a ' (;
Meberi!an ni&ai integer A !e 4ariabe& a. *isi !iri dari o%erator disebut &4a&ue (&e5t 4a&ue)
dan sisi !anan disebut r4a&ue (right 4a&ue). &4a&ue harus se&a&u beru%a 4ariabe&dan sisi !anan
da%at beru%a !onstanta, 4ariabe&, hasi& dari suatu o%erasi atau !obinasi dari seuan$a.
#ontoh 6
int a, b; // a:% b:%
a ' +-; // a:1" b:%
b ' 2; // a:1" b:4
a ' b; // a:4 b:4
b ' .; // a:4 b:&
7asi& dari contoh diatas, a berni&ai @ dan + berni&ai H.
#ontoh 6
a ' ) * $b ' (%;
eQui4a&en dengan 6
b ' (;
a ' ) * b;
Grithmetic operators ( -, ., /, /, 0 )
3 addition
A subtraction
F u&ti%&ication
8 di4ision
R odu&e

1(
Compound assignation operators
(-#, .#, /#, /#, 0#, >>#, <<#, 1#, 2#, 3#)
contoh 6
'alue -# increase; e&uivalen dengan 'alue # 'alue - increase;
a .# 4; e&uivalen dengan a # a . 4;
a /# b; e&uivalen dengan a # a / b;
price /# units - 5; e&uivalen dengan price # price / (units - 5);
'ncrease (++) and decrease (II).
#ontoh 6
a**;
a*'+;
a'a*+;
#ontoh diatas ada&ah eQui4a&en secara 5ungsiona&. 0i&ai a di!urangi 1.
/%erator -ncrease dan Decrease da%at diguna!an sebagai %re5iN atau su55iN. Dengan !ata
&ain da%at ditu&is!an sebe&u identi5ier 4ariabe& (++a) atau sesudahn$a (a++). o%erator
increase $ang diguna!an sebagai %re5iN (++a), 'erbedaann$a ter&ihat %ada tabe& diba1ah ini 6
Example 1 Example 2
6#+;
,#--6;
// ' is 4( ) is 4
6#+;
,#6--;
// ' is 3( ) is 4
'ada contoh 1, J ditabah!an sebe&u ni&ain$a diberi!an !e G. *edang!an contoh D, 0i&ai J
diberi!an ter&ebih dahu&u !e G dan J ditabah!an !eudian.
3elational operators ( ##, 7#, >, <, >#, <# )
Hntu! enge4a&uasi antara D e!s%resi, da%at diguna!an o%erator Re&asiona&. 7asi& dari
o%erator ini ada&ah ni&ai +ool $aitu han$a beru%a true atau false, atau da%at "uga da&a ni&ai
int, $ untu! ere%rensentasi!an "false" dan 5 untu! ere%resentasi!an "true". /%eratorA
o%erator re&asiona& %ada #33 6

''
)&ual
C'
*i##erent
#
+reater than
!
,e!! than
#'
+reater or e&ual than
11
!'
,e!! or e&ual than
#ontoh 6
(8 '' 4)
would return alse-
(4 > ")
would return true-
(+ 7# *)
would return true-
(9 ># 9)
would return true-
(4 < 4)
would return alse-
#ontoh, isa&!an aKC, +K> dan cKD 6
(a '' 4)
would return alse-
(a/b ># c)
would return true !ince $)B0 #' /% i! it-
(b-" > a/c)
would return alse !ince $0*2 # )B/% i! it-
((b#*) '' a)
would return true-
6ogic operators ( 7, 11, 33 ).
/%erator 9 eQui4a&en dengan o%erasi boo&ean 0/T, han$a e%un$ai 1 o%erand, berguna
untu! eba&i!!an ni&ai dari o%erand $ang bersang!utan. #ontoh 6
7(4 ## 4)
return! alse becau!e the e."re!!ion at it! right $( '' (%
would be true-
7(9 <# ")
return! true becau!e $/ !' 2% would be alse-
7true
return! alse-
7alse
return! true-
o%erator Logi!a LL dan MM diguna!an untu! enge4a&uasi D e!s%resi dan enghasi&!an 1 ni&ai
a!hir. e%un$ai arti $ang saa dengan o%erator &ogi!a Boo&ean A0D dan /R. #ontoh 6
/ir!t
0"erand
a
1econd
0"erand
b
result
a 11 b
result
a 33 b
true true true true
true #al!e false true
#al!e true false true
#al!e #al!e false false
#ontoh 6
( (4 '' 4) 11 (+ > 9) ) return! alse $ true DD false %-
( (4 '' 4) 33 (+ > 9)) return! true $ true EE false %-
Conditional operator ( ) ).
12
o%erator !ondisiona& enge4a&uasi e!s%resi dan eberi!an hasi& tergantung dari hasi&
e4a&uasi (true atau 5a&se). *inta!s 6
condition ? result1 : result#
Bi!a !ondisi true a!a a!an enghasi&!an resu&t1, "i!a tida! a!an enghasi&!an resu&tD.
8''4 ) " : +
return! 3 !ince 7 i! not e&ual to 5-
8''4-* ) " : +
return! 4 !ince 7 i! e&ual to 5+2-
4#+ ) a : b
return! a, !ince 5 i! greater than 3-
a#b ) a : b
return! the greater one, a or b-
Jit.ise Fperators ( 1, 3, 2, ;, <<, >> ).
/%erator Bit1ise eodi5i!asi 4ariabe& enurut bit $ang ere%resentasi!an ni&ai $ang
disi%an, atau dengan !ata &ain da&a re%resentasi binar$.

o" a!m *e!cri"tion
2 AND ,ogical A3*
4 OR ,ogical 05
6 XOR ,ogical e.clu!ive 05
7 NOT Com"lement to one $bit inver!ion%
88 S! 1hi#t ,e#t
99 SR 1hi#t 5ight
4/plicit type casting operators
T$%e casting o%erators eung!in!an untu! eng!on4ersi!an ti%e data $ang sudah diberi!an
!e ti%e data $ang &ain. Ada bebera%a cara $ang da%at di&a!u!an da&a #33, $ang %a&ing
%o%u&ar $aitu ti%e baru ditu&is!an da&a tanda !urung () contoh6
int i;
float f ' 0"+2;
i ' $int% f;
#ontoh diatas, eng!on4ersi!an ni&ai +.5" en"adi ni&ai integer (+). T$%e casting o%erator
$ang diguna!an (int). #ara &ainn$a 6
i ' int $ f %;

si0eof()
13
/%erator ini enera 1 %araeter, da%at beru%a t$%e 4ariabe& atau 4ariabe& itu sendiri dan
engeba&i!an u!urann$a t$%e atau ob"ect tersebut da&a b$tes 6
a ' si5eof $char%;
#ontoh diatas a!an eberi!an ni&ai 1!e a !arena char ada&ah ti%e data dengan %an"ang 1
b$te. 0i&ai $ang diberi!an o&eh si0eof bersi5at !onstsn constant.

=rioritas pada operator
#ontoh 6
a ' ( * . F )
Ba1aban dari contoh diatas ada&ah M. Diba1ah ini ada&ah %rioritas o%erator dari tinggi !e
rendah 6

Pr"#r"t$ Operat#r Des%r"pt"#& Ass#%"at"'"t$
1
GG
!co"e ,e#t
2
$% H I ,# "
si5eof
,e#t
3
** ,,
increment:decrement
5ight
J
Com"lement to one $bitwi!e%
C
unary 30;
D B
5e#erence and *ere#erence
$"ointer!%
$type%
;y"e ca!ting
* ,
<nary le!! !ign
4
B K F
arithmetical o"eration! ,e#t
5
* ,
arithmetical o"eration! ,e#t
6
!! ##
bit !hi#ting $bitwi!e% ,e#t
7
! !' # #'
5elational o"erator! ,e#t

'' C'
5elational o"erator! ,e#t
'
D L E
=itwi!e o"erator! ,e#t
1(
DD EE
,ogic o"erator! ,e#t
11
8G
Conditional 5ight
12
' *' ,' B' K' F'
##' !!' D' L' E'
A!!ignation 5ight
13
,
Comma, 1e"arator ,e#t
14
)omuni-asi melalui console
#onso&e eru%a!an inter5ace dasar %ada co%uters, biasan$a beru%a !e$board dan onitor.
Ke$board eru%a!an a&at in%ut standar dan onitor ada&ah a&at out%ut standar. Da&a
&ibrar$ iostrea #33 , standard o%erasi in%ut dan out%ut untu! %erograan didu!ung o&eh D
data streas6 cin untu! in%ut dan cout untu! out%ut. Buga, cerr dan clog sebagai tabahan
untu! out%ut streas $ang di desain !husus untu! ena%i&!an error essages. Da%at
diarah!an &angsung !e standard out%ut au%un !e &og 5i&e.
Biasan$a cout (standard out%ut strea) ditu"u!an untu! onitor dan cin (standard in%ut
strea) ditu"u!an untu! !e$board. Dengan engguna!an dua streas ini, a!a !ita da%at
berintera!si dengan user dengan ena%i&!an essages %ada onitor dan eneria in%ut
dari !e$board.
Futput (cout)
'enggunaan cout strea dhubung!an dengan o%erator o4er&oaded ;; (*e%asang tanda >&ess
than>). #ontoh 6
cout !! 6Output sentence6; // prints *utput sentence on
screen
cout !! +)-; // prints number 1#" on screen
cout !! 1; // prints the content of
variable x on screen
/%erator ;; di!ena& sebagai insertion o%erator, diana ber5ungsi untu! engin%ut data $ang
engi!utin$a. Bi!a beru%a string, a!a harus dia%it dengan !uti% ganda (>), sehingga
ebeda!ann$a dari 4ariab&e. #ontoh 6

cout !! 67ello6; // prints +ello on screen
cout !! 7ello; // prints the content of +ello
variable on screen
/%erator insertion (;;) da%at diguna!an &ebih dari 1 !a&i da&a !a&iat $ang saa, #ontoh 6
cout !! 67ello, 6 !! 6= am 6 !! 6a M** sentence6;
#ontoh diatas a!an ena%i&!an ello1 ' am a C++ sentence %ada &a$ar onitor. Man5aat
dari %engu&angan %enggunaan o%erator insertion (;;) ada&ah untu! ena%i&!an !obinasi dari
satu 4ariabe& dan !onstanta atau &ebih, contoh 6
cout !! 67ello, = am 6 !! age !! 6 years old and my 5ipcode
is 6 !! 5ipcode;
Misa&!an 4ariab&e age J DI dan 4ariab&e Si%code J 9++MI a!a out%ut $ang dihasi&!an 6
7ello, = am )2 years old and my 5ipcode is 3--/2
15
#ontoh 6
cout !! 6Nirst sentence"9n 6;
cout !! 6Second sentence"9nAhird sentence"6;
/ut%ut 6
Nirst sentence"
Second sentence"
Ahird sentence"
*e&ain dengan !ara!ter ne1A&ine, da%at "uga engguna!an ani%u&ator endl, contoh
G
cout !! 6Nirst sentence"6 !! endl;
cout !! 6Second sentence"6 !! endl;
/ut%ut 6
Nirst sentence"
Second sentence"
'nput (cin).
Menangani standard in%ut %ada #33 dengan enabah!an o4er&oaded o%erator eNtraction
(<<) %ada cin strea. 7arus dii!uti bengan 4ariab&e $ang a!an en$i%an data. #ontoh 6

int age;
cin ## age;
#ontoh diatas ende!&arasi!an 4ariabe& age dengan ti%e int dan enunggu in%ut dari cin
(!e$borad) untu! disi%an di 4ariabe& age.
cin a!an e%roses in%ut dari !e$board se!a&i sa"a dan tobo& ,0T,R harus dite!an.
#ontoh 6
// i/o example
#include !iostream"h#
int main $%
&
int i;
cout !! 6<lease enter an integer OalueG 6;
cin ## i;
cout !! 6Ahe Oalue you entered is 6 !! i;
cout !! 6 and its double is 6 !! iB) !! 6"9n6;
return -;
16
P
/ut%ut 6
=lease enter an integer *alue2 .-)
7he *alue you entered is H#C and its dou+le is ?@#@.
cin "uga da%at diguna!an untu! &ebih dari satu in%ut 6
cin ## a ## b;
,Qui4a&en dengan 6
cin ## a;
cin ## b;
Da&a ha& ini data $ang di in%ut harus D, satu untu! 4ariabe& a dan &ainn$a untu! 4ariabe& +
$ang %enu&isann$a di%isah!an dengan 6 s%asi, tabu&ar atau ne1&ine.
Stru-tur )ontrol
*ebuah %rogra biasan$a tida! terbatas han$a %ada intru!si $ang terurut sa"a, teta%i "uga
eung!in!an ter"adin$a %ercabangan, %eru&angan dan %engabi&an !e%utusan. Hntu!
engatasi !ebutuhan itu #33 en$edia!an stru!tur !ontro& $ang da%at enangani ha&Aha&
tersebut.

Hntu! ebahas ha& tersebut diatas, a!an diteui isti&ah +loc- of instructions. B&o!
instru!si ada&ah se!u%u&an instru!si $ang dibatasi dengan tanda seico&on (?) teta%i
di!e&o%o!an da&a satu b&o! $ang dibatasi dengan !urung !ura1a& $ %.
Stru-tur )ondisional 2 if and else
Diguna!an untu! enge!se!usi sebuah atau satu b&o! instru!si "i!a !ondisi ter%enuhi,
sinta!s6
i (condition) statement
condition eru%a!an e!s%resi $ang die4a&uasi. Bi!a !ondisi berni&ai true, a!a statement
a!an di"a&an!an. Bi!a false, a!a statement a!an diabai!an dan %rogra en"a&an!an
instru!si se&an"utn$a.
#ontoh, A!an terceta! x is 5$$ "i!a ni&ai $ang disi%an %ada 4ariab&e x ada&ah 1++6
if $1 '' +--%
cout !! 61 is +--6;
17
Bi!a ada &ebih dari satu instru!si $ang a!an di"a&an!an a!a harus dibuat da&a b&o!
instru!si dengan engguna!an tanda !urung !ura1a& & P6
if $1 '' +--%
&
cout !! 61 is 6;
cout !! 1;
P
Da%at "uga engguna!an !e$1ord e&se, "i!a !ondisi tida! ter%enuhi. 'enu&isann$a
digabung!an dengan i 6
i (condition) statement1 else statement#
#ontoh 6
if $1 '' +--%
cout !! 61 is +--6;
else
cout !! 61 is not +--6;
A!an terceta! / is ?## "i!a ni&ai N ada&ah 1++, "i!a tida! a!an terceta! / is not ?##.
#ontoh 6
if $1 # -%
cout !! 61 is positiOe6;
else if $1 ! -%
cout !! 61 is negatiOe6;
else
cout !! 61 is -6;
Stru-tur perulangan (loops)
Loo%s eru%a!an %eru&angan stateent dengan "u&ah tertentu "i!a !ondisi ter%enuhi.
7he .hile loop.
*inta!s6
<hile (expression) statement
.ungsi dari stateent diatas ada&ah engu&ang stateent "i!a eN%ression berni&ai true.
#ontoh 6
// custom countdown using while
#include !iostream"h#
int main $%
&
int n;
cout !! 6>nter the starting number # 6;
cin ## n;
1
while $n#-% &
cout !! n !! 6, 6;
,,n;
P
cout !! 6N=;>C6;
return -;
>
/ut%ut 6
=nter the startin! number > Q
>, 8, 9, 4, ", +, *, 5, ?@A=7
A&gorita %rogra diu&ai dari main 6
?. Hser engAin%ut ni&ai untu! n.
C. -nstru!ti 1hi&e enge4a&uasi a%a!ah (n>$). Ada dua !eung!inan 6
true2 engAe!se!usi stateent (ste% >1)
false2 e&o%ati stateent. &an"ut !e ste% 4..
>.Menge!se!usi stateent 6 cout !! n !! 6, 6;
,,n;
(Mena%i&!an n di &a$ar dan engurangi n dengan 1).
@. A!hir dari b&o!. !eba&i !e ste% C.
A. &an"ut enu"u %rogra sete&ah b&o!. #eta! 6 <'34& dan %rogra bera!hir.
7he doI.hile loop.
.orat6
do statement <hile (condition);
*ecara 5ungsiona&, ha%ir saa dengan 1hi&e &oo%, han$a sa"a condition da&a doA1hi&e
die4a&uasi sete&ah e!se!usi stateent , dengan !ata &ain, sedi!itn$a satu !a&i e!se!usi
stateent 1a&au%un !ondisi tida! ter%enuhi. #ontoh 6
// number echoer
#include !iostream"h#
int main $%
&
unsigned long n;
do &
cout !! 6>nter number $- to end%G 6;
cin ## n;
cout !! 6Rou enteredG 6 !! n !! 69n6;
P while $n C' -%;
return -;
>
/ut%ut 6
=nter number ($ to end): +)02(
Bou entered: 5*+"4
=nter number ($ to end): +/-)..
Bou entered: 59$*88
1'
=nter number ($ to end): -
Bou entered: $
7he for loop.
.orat 6
or (initiali,ation; condition; increase) statement;
.ungsin$a a!an engu&ang stateent "i!a condition berni&ai benar. *aa se%erti 1hi&e &oo%.,
han$a sa"a for eung!in!an untu! eberi!an instru!si initia&iSation dan intru!si increase,
sehingga da%at ena%i&!an &oo% dengan counter.
A&gorita %eru&angan 5or 6
1- initia&iSation, diguna!an untu! eberi!an ni&ai a1a& untu! 4ariab&e counter.
Die!se!usi han$a se!a&i.
2- condition, Die4a&uasi, "i!a berni&ai true a!a &oo% ber&an"ut, seba&i!n$a &oo% berhenti
dan statement diabaikan
3- stateent, die!se!usi, bisa beru%a instru!si tungga& au%un b&o! instru!si (da&a
tanda $ % ).
4- increase, die!se!usi !eudian a&gorita !eba&i !e ste% D.
#ontoh 6
// countdown using a for loop
#include !iostream"h#
int main $%
&
for $int n'+-; n#-; n,,% &
cout !! n !! 6, 6;
P
cout !! 6N=;>C6;
return -;
>
/ut%ut 6
5$, C, >, 8, 9, 4, ", +, *, 5, ?@A=7
-nitia&iSation dan increase bersi5at o%tiona&. *ehingga da%at ditu&is!an 6 for ("n<?#") untu!
5or tan%a initia&iSation dan increase? atau for ("n<?#"n++) untu! 5or dengan increase teta%i
tan%a initia&iSation. Dengan o%erator !oa (1) !ita da%at ende!&arasi!an &ebih dari satu
instru!si %ada bagian ana%un terasu! da&a &oo% for, contoh 6
#or $ n?(, i?1(( @ nA?i @ nBB, iCC %
&
// whatever here...
P
2(
Loo% diatas a!an engAe!se!usi seban$a! 2+ !a&i 6

ni&ai a1a& n J # dan i J ?##, dengan !ondisi (n&Ki) ($aitu n tida! saa dengan i). Karena n
enga&ai %enabahan 1 dan i enga&ai %engurangan 1, a!a !ondisi &oo% a!an sa&ah sete&ah
&oo% $ang !eA2+, $aitu !eti!a n dan i berni&ai 2+.
)ontrol =erca+angan (Jifurcation) dan 6ompatan (jumps)
'nstru-si +rea-
Dengan engguna!an instru!si brea!, %rogra a!an !e&uar dari &oo% 1a&au%un !ondisi untu!
bera!hirn$a &oo% be&u ter%enuhi. Da%at diguna!an untu! enga!hiri in5inite &oo%, atau
untu! en$ebab!an &oo% se&esai sebe&u saatn$a, contoh 6
// brea- loop example
#include !iostream"h#
int main $%
&
int n;
for $n'+-; n#-; n,,% &
cout !! n !! 6, 6;
if $n''0%
&
cout !! 6countdown abortedC6;
break;
P
P
return -;
>
/ut%ut 6
5$, C, >, 8, 9, 4, ", +, countdo<n aborted7

'nstru-si continue
-nstru!si continue en$ebab!an %rogra a!an e&e1ati instru!si se&an"utn$a hingga a!hir
b&o! da&a &oo%. Atau dengan !ata &ain &angsung e&o%at !e iterasi se&an"utn$. #ontoh
beri!ut a!an e&e1ati ang!a 2 da&a hitungan undur 6
// brea- loop example
#include !iostream"h#
int main $%
&
for $int n'+-; n#-; n,,% &
if $n''(% continue;
21
cout !! n !! 6, 6;
P
cout !! 6N=;>C6;
return -;
>

/ut%ut 6
5$, C, >, 8, 9, ", +, *, 5, ?@A=7
'nstru-si goto
Men$ebab!an &o%atan da&a %rogra. Tu"uan dari &o%atan diidenti5i!asi!an dengan &abe&,
$ang berisi!an arguenAarguen. %enu&isan &abe& dii!uti dengan tanda co&on (2). #ontoh 6
// goto loop example
#include !iostream"h#
int main $%
&
int n'+-;
loopG
cout !! n !! 6, 6;
n,,;
if $n#-% goto loop;
cout !! 6N=;>C6;
return -;
>
/ut%ut 6
5$, C, >, 8, 9, 4, ", +, *, 5, ?@A=7
Stru-tur Sele-si 2 s.itch.
-nstru!si s1itch diguna!an untu! ebanding!an bebera%a ni&ai !onstan $ang ung!in untu!
sebuah e!s%resi, ha%ir saa dengan i5 dan e&se i5. Bentu! uun$a 6
s<itch (expression) {
case constant1:
bloc- of instructions 1
breaD;
case constant#:
bloc- of instructions #
breaD;
.
.
.
deault:
default bloc- of instructions
}
22
s.itch engAe4a&uasi eN%ression dan eeri!sa a%a!ah eQui4a&en dengan constant1, "i!a $a,
a!a a!an engAe!se!usi b&oc! o5 instructions 1 sa%ai terbaca !e$1ord +rea-, !eudian
%rogra a!an &o%at !e a!hir dari stu!tur se&e!ti5 s1itch.
Bi!a eN%ression tida! saa dengan constant1, a!a a!an di%eri!sa a%a!ah eN%ression
eQui4a&en dengan constantD. "i!a $a, a!a a!an die!se!usi b&oc! o5 instructions D sa%ai
terbaca +rea-. Begitu seterusn$a, "i!a tida! ada satu%un !onstanta $ang sesuai a!a a!an
enge!se!usi default2
contoh 6
switch example
switch $1% &
case +G
cout !! 61 is +6;
break;
case )G
cout !! 61 is )6;
break;
defaultG
cout !! 6Oalue of 1 unknown6;
>
if-else e(u"'ale&t
if $1 '' +% &
cout !! 61 is +6;
P
else if $1 '' )% &
cout !! 61 is )6;
P
else &
cout !! 6Oalue of 1 unknown6;
>
23
<unction
.unction ada&ah satu b&o! instru!si $ang die!se!usi !eti!a di%anggi& dari bagian &ain da&a
suatu %rogra. .orat dari 5unction 6
type name ( argument1, argument2, ...) statement
Diana 6
type, ada&ah ti%e dari data $ang a!an di!eba&i!an8dihasi&!an o&eh 5unction.
name, ada&ah naa $ang eung!in!an !ita eanggi& 5unction.
arguments (dis%esi5i!asi!an sesuai !ebutuhan). *etia% arguen terdiri dari ti%e data
dii!uti identi5ier, se%erti de!&arasi 4ariab&e (contoh, int 1) dan ber5ungsi da&a
5unction se%erti 4ariab&e &ainn$a. Buga da%at e&a!u!an %assing %araeters !e
5unction itu !eti!a di%anggi&. 'araeter $ang berbeda di%isah!an dengan !oa.
statement, eru%a!an bagian badan suatu 5unction. Da%at beru%a instru!si tungga&
au%un satu b&o! instru!si $ang ditu&is!an diantara !urung !ura1a& $%.
Contoh function 1 : 0ut"ut :
// function example Ehe result is >
#include !iostream"h#
int addition $int a, int b%
&
int r;
r'a*b;
return $r%;
P
int main $%
&
int 5;
5 ' addition $(,0%;
cout !! 6Ahe result is 6 !! 5;
return -;
>
'rogra diatas, !eti!a die!se!usi a!an u&ai dari 5ungsi main. main 5unction eu&ai
dengan de!&arasi 4ariabe& F dengan ti%e int. *ete&ah itu instru!si %eanggi&an 5ungsi
addition. Bi!a di%erhati!an, ada !esaaan antara sru!tur %eanggi&an dengan de!&arasi
5ungsi itu sendiri, %erhati!an contoh diba1ah ini 6
-nstru!si %eanggi&an da&a 5ungsi main untu! 5ungsi addition, eberi!an D ni&ai 6 A dan >
engacu !e %araeter int a dan int + $ang dide!&arasi!an untu! 5ungsi addition.
24
*aat 5ungsi di%anggi& dari main, !ontro& %rogra bera&ih dari 5ungsi main !e 5ungsi addition.
0i&ai dari !edua %araeter $ang diberi!an (A dan >) diAco%$ !e 4ariab&e &oca& ? int a dan int
+.
.ungsi addition ende!&arasi!an 4ariab&e baru (int r;), !eudian e!s%resi r#a-b;, $ang
berarti r eru%a!an hasi& %en"u&ahan dari a dan b, diana a dan b berni&ai 4 dan + sehingga
hasi& a!hirn$a >. %erintah se&an"utn$a ada&ah 6
return (r);
Meru%a!an a!hir dari 5ungsi addition, dan engeba&i!an !ontro& %ada 5ungsi main.
*tateent return di!uti dengan 4ariabe& r (return (r);), sehingga ni&ai dari r $aitu 8
a!an di!eba&i!an 6
Dengan !ata &ain %eanggi&an 5ungsi (addition (4,+)) ada&ah engganti!an dengan ni&ai
$ang a!an di!eba&i!an (>).
#ontoh 5unction D 6
// function example
#include !iostream"h#
int subtraction $int a, int b%
&
int r;
r'a,b;
return $r%;
P
int main $%
&
int 1'(, y'0, 5;
5 ' subtraction $.,)%;
cout !! 6Ahe first result is 6 !! 5 !! 49n4;
cout !! 6Ahe second result is 6 !! subtraction $.,)% !! 49n4;
cout !! 6Ahe third result is 6 !! subtraction $1,y% !! 49n4;
5' 2 * subtraction $1,y%;
cout !! 6Ahe fourth result is 6 !! 5 !! 49n4;
return -;
>
0ut"ut :
Ehe irst result is 4
Ehe second result is 4
Ehe third result is *
Ehe ourth result is 9
25
.ungsi diatas e&a!u!an %engurangan dan engeba&i!an hasi&n$a. Bi!a di%erhati!an da&a
5ungsi main, da%at di&ihat bebera%a cara %eanggi&an 5ungsi $ang berbeda.
'erhati!an %enu&isan %eanggi&an 5unction, 5orat %enu&isan %ada dasarn$a saa.
#ontoh 1 6
F # subtraction (8,*);
cout << %Ehe irst result is % << F;
#ontoh D 6
cout << %Ehe second result is % << subtraction (8,*);
#ontoh L 6
cout << %Ehe third result is % << subtraction (x,G);
7a& &ain dari contoh diatas, %araeter $ang diguna!an ada&ah 4ariab&e, bu!an !onstanta.
#ontoh diatas eberi!an ni&ai dari / dan y, $aitu A dan >, hasi&n$a C.

contoh I 6
F # " - subtraction (x,G);
Atau da%at ditu&is!an 6
F # subtraction (x,G) - ";
A!an eberi!an hasi& a!hir $ang saa. 'erhati!an, %ada setia% a!hir e!s%resi se&a&u
diberi tanda seico&on (;).
<unction tanpa tipe ()egunaan *oid)
De!&arasi 5ungsi a!an se&a&u dia1a&i dengan ti%e dari 5ungsi, $ang en$ata!an ti%e data a%a
$ang a!an dihasi&!an dari 5ungsi tersebut. Bi!a tida! ada ni&ai $ang a!an di!eba&i!an, a!a
da%at diguna!an ti%e *oid, contoh 6
// void function example /ut%ut G
#include !iostream"h# @(m a unction7
Ooid dummyfunction $Ooid%
&
cout !! 6=4m a functionC6;
P
int main $%
&
dummyfunction $%;
return -;
26
>
Wa&au%un %ada #33 tida! di%er&u!an enAs%esi5i!asi!an 'oid, ha& itu diguna!an untu!
engetahui bah1a 5ungsi tersebut tida! e%un$ai arguen, atau %araeter dan &ainn$a.
Ma!a dari itu %eanggi&an terhada% 5ungsin$a ditu&is!an 6
dummGunction ();
Grgument passed +y *alue dan +y reference.
'araeter $ang diberi!an !e 5ungsi asih eru%a!an %assed b$ 4a&ue. Berarti, !eti!a
eanggi& sebuah 5ungsi, $ang diberi!an !e 5ungsi ada&ah ni&ain$a, tida! %ernah enA
s%esi5i!asi!an 4ariab&en$a. *ebagai #ontoh, %eanggi&an 5ungsi addition, men!!unaDan
perintah beriDut :
int 1'(, y'0, 5;
5 ' addition $ 1 , y %;
Cang berarti eanggi& 5ungsi addition dengan eberi!an ni&ai dari x dan G, $aitu 4 dan
+, bukan Oariabelnya"
Teta%i, da%at "uga eani%u&asi dari da&a 5ungsi, ni&ai dari 4ariab&e eNterna&. Hntu! ha& itu,
diguna!an arguent %assed b$ re5erence, #ontoh 6
// passing parameters by reference
#include !iostream"h#
Ooid duplicate $intD a, intD b, intD c%
&
aB');
bB');
cB');
P
int main $%
&
int 1'+, y'0, 5'.;
duplicate $1, y, 5%;
cout !! 61'6 !! 1 !! 6, y'6 !! y !! 6, 5'6 !! 5;
return -;
>

/ut%ut 6
x#*, G#9, F#5"
27
'erhati!an de!&arasi duplicate1 ti%e %ada setia% arguen dia!hiri dengan tanda a%ersand
(L), $ang enanda!an bah1a 4ariab&e tersebut biasan$a a!an %assed b$ re5erence dari %ada
b$ 4a&ue.
Keti!a engiri!an 4ariab&e b$ re5erence, $ang di!iri!an ada&ah 4ariabe&n$a dan %erubahan
a%a%un $ang di&a!u!an da&a 5ungsi a!an ber%engaruh %ada 4ariab&e di&uarn$a.
Atau dengan !ata &ain, %araeter $ang te&ah diteta%!an ada&ah a, + dan c dan %araeter
$ang diguna!an saat %eanggi&an ada&ah /, y dan 0, a!a %erubahan %ada a a!an
e%engaruhi ni&ai /, begitu%un %ada + a!an e%engaruhi y, dan c e%engaruhi 0.
-tu sebabn$a enga%a hasi& out%ut dari %rogra diatas ada&ah ni&ai 4ariab&e da&a ain
di!a&i!an D. "i!a de!&arasi 5ungsi tida! dia!hiri dengan tanda a%ersand (&), a!a 4ariab&e
tida! a!an %assed b$ re5erence, sehingga hasi&n$a a!an teta% ni&ai dari x, G dan F tanpa
mengalami perubahan"
'assing b$ re5erence eru%a!an cara e5e!ti5 $ang eung!in!an sebuah 5ungsi
engeba&i!an &ebih dari satu ni&ai. #ontoh, 5ungsi ini a!an engeba&i!an ni&ai sebe&u dan
sesudahn$a dari ni&ai a1a& %araeter 6
// more than one returning value
#include !iostream"h#
Ooid preOne1t $int 1, intD preO, intD ne1t%
&
preO ' 1,+;
ne1t ' 1*+;
P
int main $%
&
int 1'+--, y, 5;
preOne1t $1, y, 5%;
cout !! 6<reOious'6 !! y !! 6, Ne1t'6 !! 5;
return -;
>
/ut%ut 6
Hre'ious#CC, Iext#5$5
;ilai 8efault dalam argument
Keti!a ende!&arasi!an sebuah 5ungsi, da%at diberi!an ni&ai de5au&t untu! setia% %araeter.
ni&ai ini a!an diguna!an !eti!a %araeter %eanggi& di!osong!an. Hntu! itu cu!u%
dide!&arasi!an %ada saat de!&arasi 5ungsi, #ontoh 6
2
// default values in functions
#include !iostream"h#
int diOide $int a, int b')%
&
int r;
r'aKb;
return $r%;
P
int main $%
&
cout !! diOide $+)%;
cout !! endl;
cout !! diOide $)-,2%;
return -;
>

/ut%ut 6
9
4
Da%at di&ihat da&a 5ungsi di'ide. -nstru!si 16
di'ide (5*)
-nstru!si D 6
di'ide (*$,")
<ungsi F*erloaded function
Dua 5ungsi $ang berbeda da%at ei&i!i naa $ang saa "i!a %rotot$%e dari arguen ere!a
berbeda, bai! "u&ah arguenn$a au%un ti%e arguenn$a, #ontoh 6
// overloaded function
#include !iostream"h#
int diOide $int a, int b%
&
return $aKb%;
P
float diOide $float a, float b%
&
return $aKb%;
P
int main $%
&
2'
int 1'(,y');
float n'("-,m')"-;
cout !! diOide $1,y%;
cout !! 69n6;
cout !! diOide $n,m%;
cout !! 69n6;
return -;
>
0ut"ut :
*
*.4

#ontoh diatas e%un$ai naa 5ungsi $ang saa, teta%i arguenn$a berbeda. Cang %ertaa
berti%e int dan &ainn$a berti%e loat. Ko%i&er engetahuin$a dengan e%erhati!an ti%e
arguen %ada saat %eanggi&an 5ungsi.
inline <unction
Directi4e in&ine da%at diserta!an sebe&u de!&arasi 5ungsi, untu! ens%esi5i!asi!an bah1a
5ungsi tersebut harus diAco%i&e sebagai suatu !ode saat di%anggi&. *aa ha&n$a dengan
de!&arasi acro. Keuntungann$a da%at ter&ihat %ada 5ungsi sederhana $aitu hasi& $ang
diberi!an a!an &ebih ce%at. ("i!a ter"adi stac!ing o5 arguents) da%at dihindari. .orat
de!&arasi 6
inline type name ( arguments ... ) { instructions ... }
Demanggilannya, !ama dengan "emanggilan #ung!i "ada umumnya- ;idak di"erlukan
"enuli!an keyword in&ine %ada setia% %eanggi&an.

3ecursi*ity <unction
Re!ursi5 eru%a!an !ee%uan sebuah 5ungsi untu! eanggi& dirin$a sendiri. *angat
berguna untu! %enger"aan sorting atau %erhitungan 5actoria&. #ontoh, 5orat %erhitungan
5actoria& 6

nC ' n B $n,+% B $n,)% B $n,0% """ B +
Misa&!an, 29 ( 2 5a!toria&), a!an en"adi 6
(C ' ( B 2 B 0 B ) B + ' +)-
#ontoh 6
// factorial calculator
#include !iostream"h#
long factorial $long a%
&
if $a # +%
return $a B factorial $a,+%%;
else
3(
return $+%;
P
int main $%
&
long l;
cout !! 6Aype a numberG 6;
cin ## l;
cout !! 6C6 !! l !! 6 ' 6 !! factorial $l%;
return -;
>
/ut%ut 6
EGpe a number: 3
7C # +9*>>$
=rototyping function.
.orat 6
type name ( argument_type1, argument_type2, ...);
7a%ir saa dengan de!&arasi 5ungsi %ada uun$a, -ecuali 6
Tida! ada stateent 5ungsi $ang biasan$a ditu&is!an da&a !urung !ura1a& = @.
Dia!hiri dengan tanda seico&on (?).
Da&a arguen ditu&is!an ti%e arguen, bersi5at o%tiona&.
#ontoh6
// prototyping
#include !iostream"h#
Ooid odd $int a%;
Ooid eOen $int a%;
int main $%
&
int i;
do &
cout !! 6Aype a numberG $- to e1it%6;
cin ## i;
odd $i%;
P while $iC'-%;
return -;
P
Ooid odd $int a%
&
if $$aF)%C'-% cout !! 6Number is odd"9n6;
else eOen $a%;
P
Ooid eOen $int a%
31
&
if $$aF)%''-% cout !! 6Number is eOen"9n6;
else odd $a%;
>
/ut%ut 6
EGpe a number ($ to exit): 3
Iumber is odd.
EGpe a number ($ to exit): /
Iumber is e'en.
EGpe a number ($ to exit): +-0-
Iumber is e'en.
EGpe a number ($ to exit): -
Iumber is e'en.
#ontoh diatas tida! en"e&as!an tentang e5e!ti4itas %rogra teta%i bagaiana %rotot$%ing
di&a!sana!an. 'erhati!an %rotot$%e dari 5ungsi odd dan e'en6
Ooid odd $int a%;
Ooid eOen $int a%;
Meung!in!an 5ungsi ini di%erguna!an sebe&u dide5inisi!an. 7a& &ainn$a enga%a %rogra
diatas harus ei&i!i sedi!itn$a 1 5ungsi %rotot$%e, !arena 5ungsi da&a odd terda%at
%eanggi&an 5ungsi e*en dan da&a e*en terda%at %eanggi&an 5ungsi odd. Bi!a tida! satu%un
dari 5ungsi tersebut dide!&arasi!an sebe&un$a, a!a a!an ter"adi error.
32
Grrays
Arra$ ada&ah hi%unan e&een (4ariab&e) dengan ti%e $ang saa dan disi%an secara
berurutan da&a eor$ $ang ditandai dengan eberi!an indeN %ada suatu naa 4ariab&e.
#ontohn$a, !ita da%at en$i%an 2 ni&ai dengan ti%e int tan%a harus ende!&arasi!an 2
identi5ier 4ariabe& $ang berbeda. 'erhati!an contoh diba1ah ini 6
Bagian !osong diatas ere%resentasi!an e&een arra$, da&a !asus ini ada&ah ni&ai integer.
Ang!a $ A " eru%a!an indeN dan se&a&u diu&ai dari $. *e%erti %enggunaan 4ariab&e %ada
uun$a, arra$ harus dide!&arasi!an ter&ebih dahu&u, dengan 5orat sbb 6
type name HelementsI;
Ma!a contoh arra$ diatas dide!&arasi!an sbb 6
int billy H(I;
'nisialisasi array
Keti!a ende!&arasi!an arra$ &o!a& (dida&a 5ungsi), "i!a tida! diberi!an ni&ai a!a
isi dari arra$ tida! a!an ditentu!an (undeterined) sa%ai ni&ai diberi!an. Bi!a
ende!&arasi!an arra$ g&oba& arra$ (di&uar seua 5ungsi) a!a isi dari arra$ a!an diA
iniisia&isasi!an sebagai + 6
int billy H(I;
a!a setia% e&een arra$ bi&&$ a!an diAinisia&isasi!an sebagai $ 6
Atau dide!&arasi!an dengan eberi!an ni&ai arra$ $ang ditu&is!an da&a !urung !ura1a& 6
int billG J4K # { 59, *, 88, "$, 5*$85 };
Ma!a e&een arra$ bi&&$ a!an berisi 6
Access to the 4a&ues o5 an Arra$.
0i&ai arra$ da%at dia!ses secara indi4idua&, dengan 5orat 6
nameHindexI
Ma!a dari contoh sebe&un$a naa $ang diguna!an untu! enga!ses asingAasing e&een6
33
Misa&!an a!an disi%an ni&ai 72 %ada e&een !etiga, a!a intru!sin$a 6
billGJ*K # 84;
Dan "i!a ni&ai e&een !etiga tadi a!an diberi!an !e 4ariab&e a, maka dapat dituliskan6
a # billGJ*K;
#ontoh 6 /ut%ut 6
// arrays example 5**$9
#include !iostream"h#
int billy HI ' &+/, ), .., 2-, +)-.+P;
int n, result'-;
int main $%
&
for $ n'- ; n!( ; n** %
&
result *' billyHnI;
P
cout !! result;
return -;
>
Arra$ Mu&tidiensi
Arra$ Mu&tidiensi da%at di!ata!an sebagai arra$ dari arra$. #ontoh diba1ah ini ada&ah
arra$ berdiensi D 6
Ma!a %ende!&arasiann$a 6
int jimmy H0IH(I;
#ontoh 6
// multidimensional array
#include !iostream"h#
#define ?=@A7 (
#define 7>=S7A 0
int jimmy H7>=S7AIH?=@A7I;
int n,m;
int main $%
&
for $n'-;n!7>=S7A;n**%
for $m'-;m!?=@A7;m**%
&
jimmyHnIHmI'$n*+%B$m*+%;
P
return -;
@
// pseudo$multidimensional array
#include !iostream"h#
#define ?=@A7 (
#define 7>=S7A 0
int jimmy H7>=S7A B ?=@A7I;
int n,m;
int main $%
&
for $n'-;n!7>=S7A;n**%
34
for $m'-;m!?=@A7;m**%
&
jimmyHn B ?=@A7 *
mI'$n*+%B$m*+%;
P
return -;
@
'rogra diatas tida! a!an enghasi&!an ta%i&an, teta%i a!an en$i%an ni&ai da&a eor$
se%erti diba1ah ini 6
'enggunaan !onstanta de5ined (#deine) untu! e%erudah "i!a a!an e&a!u!an
%erubahan.
Arra$ sebagai %araeter
Ada!a&an$a arra$ diberi!an !eda&a 5ungsi sebagai %araeter. Da&a #33 tida!
eung!in!an untu! %ass b$ 4a&ue satu b&o! eor$ sebagai %araeter !eda&a suatu
5ungsi. Hntu! engguna!an arra$ sebagai %araeter a!a $ang harus di&a!u!an saat
%ende!&arasian 5ungsi ada&ah s%esi5i!asi ti%e arra$ %ada arguen, #ontoh 6
Ooid procedure $int argHI%
#ontoh 6 /ut%ut 6
// arrays as parameters 4 5$ 54
* " 9 > 5$
#include !iostream"h#
Ooid printarray $int argHI, int length%
&
for $int n'-; n!length; n**%
cout !! argHnI !! 6 6;
cout !! 69n6;
P
int main $%
&
int firstarrayHI ' &(, +-, +(P;
int secondarrayHI ' &), 2, /, Q, +-P;
printarray $firstarray,0%;
printarray $secondarray,(%;
return -;
>
Dari contoh diatas, instru!si (int argNO) en"e&as!an bah1a seua arra$ berti%e int,
bera%a%un %an"angn$a. o&eh sebab itu dide!&arasi!an %araeter !edua dengan si5at $ang
saa se%erti %araeter %ertaa.
35
String L Character
'ada #33 tida! ada ti%e 4ariab&e e&een $ang s%esi5ic untu! en$i%an string. Hntu!
!e%er&uan ini da%at diguna!an arra$ dengan ti%e char, diana berisi e&een dengan ti%e char.
'er&u di ingat bah1a ti%e char diguna!an untu! en$i%an 1 !ara!ter, !arena itu arra$ dari
char diguna!an untu! en$i%an string. #ontoh 6

char LennG J*$K;
Da%at en$i%an sa%ai dengan D+ !ara!ter 6
'en$i%anan !ara!terAnta da%at dire%resentasi!an se%erti diba1ah ini 6

'erhati!an, !ara!ter 0HLL ((E#() se&a&u diserta!an dia!hir string untu! indi!asi a!hir dari
string.
-nisia&isasi string
*aa ha&n$a se%erti arra$Aarra$ sebe&un$a, inisia&isasi %ada string sbb 6
char mystringHI ' & 474, 4e4, 4l4, 4l4, 4o4, 49-4 P;
#ontoh diatas, eru%a!an inisia&isasi M buah e&een berti%e char, yaitu Mello dan
!ara!ter nu&& (&$(. Hntu! enentu!an ni&ai !onstan, %ada string diguna!an tanda !uti%
ganda (6), sedang!an untu! !ara!ter !uti% tungga& $4%. *tring $ang dia%it o&eh !uti% ganda
sudah engandung !ara!ter 0u&& %ada a!hir string, contoh 6
char mystring HI ' & 474, 4e4, 4l4, 4l4, 4o4, 49-4 P;
char mystring HI ' 67ello6;
contoh diatas eru%a!an de!&arasi arra$ mGstrin! $ang berisi M e&een.

=em+erian nilai pada string
*aa ha&n$a se%erti %eberian ni&ai %ada arra$Aarra$ sebe&un$a, untu! arra$ dengan ti%e
char da%at ditu&is!an 6
mGstrin!J$K # (M(;
mGstrin!J5K # (e(;
36
mGstrin!J*K # (l(;
mGstrin!J+K # (l(;
mGstrin!J"K # (o(;
mGstrin!J4K # (&$(;
#ara diatas sangat tida! %ra!tis. Hun$a untu! %eberian ni&ai %ada arra$ berti%e char
diguna!an 5ungsi strcpG. strcpy (string copy) ende5inisi!an cstrin! (string"h) &ibrar$
dan da%at di%anggi& dengan cara 6
strcpG (string1, string#);
instru!si diatas en$ebab!an isi daristringD diAco%$ !e string1. stringD da%at beru%a arra$,
%ointer, atau !onstanta string.
Contoh 2 Futput 2
// setting value to string N. Ooulie
#include !iostream"h#
#include !string"h#
int main $%
&
char s5MyName H)-I;
strcpy $s5MyName,6T" Soulie6%;
cout !! s5MyName;
return -;
>

'erhati!an, header<string.h> harus diserta!an agar bisa engguna!an 5ungsi strcpy.
Bisa "uga engguna!an 5ungsi sederhana se%erti setstring, dengan o%erasi $ang saa se%erti
strcpy"
Contoh 2 Futput 2
// setting value to string N. Ooulie
#include !iostream"h#
Ooid setstring $char s5Out HI, char s5=n HI%
&
int n'-;
do &
s5OutHnI ' s5=nHnI;
P while $s5=nHn**I C' 49-4%;
P
int main $%
&
char s5MyName H)-I;
setstring $s5MyName,6T" Soulie6%;
cout !! s5MyName;
return -;
>
37
Metode &ain $ang da%at diguna!an untu! inisia&isasi ni&ai $aitu in%ut strea (cin). Da&a
!asus ini, ni&ai string ditentu!an o&eh user saat e!se!usi %rogra. Keti!a engguna!an cin,
biasanya digunakan metode !etline, 'eanggi&ann$a sbb 6
cin.!etline ( char bufferJK, int length, char delimiter # (
&n();
diana, +uffer ada&ah a&aat untu! en$i%an in%ut, length ada&ah a!siu %an"ang
bu55er,dan delimiter ada&ah !ara!ter $ang diguna!an untu! enentu!an in%ut a!hir, dengan
de5au&t T atau dengan ((En().
Contoh 2
// cin with strings
#include !iostream"h#
int main $%
&
char mybuffer H+--I;
cout !! 6?hat4s your name8 6;
cin"getline $mybuffer,+--%;
cout !! 67ello 6 !! mybuffer !! 6"9n6;
cout !! 6?hich is your faOourite team8 6;
cin"getline $mybuffer,+--%;
cout !! 6= like 6 !! mybuffer !! 6 too"9n6;
return -;
>
Futput 2
Phat(s Gour name) Tuan
Mello Nuan.
Phich is Gour a'ourite team) =nter Milan
@ liDe @nter Qilan too.
'erhati!an !edua %eanggi&an cin.!etline, engguna!an identi5ier $ang saa (mGbuer).
*aa ha&n$a se%erti %enggunaan o%erator eNtraction, sehingga da%at ditu&is!an 6
cin ## mybuffer;
-nstru!si diatas da%at ber"a&an, han$a sa"a e%un$ai !eterbatasan bi&a dibanding!an
dengan cin.getline, diantaran$a 6
Da%at eneria 1 !ata sa"a (bu!an !a&iat &eng!a%).
Tida! di%er!enan!an untu! eberi!an u!uran bu55er. A!an en$ebab!an %rogra
tida! stabi& "i!a user engAin%ut &ebih besar dari !a%asitas arra$ $ang ada.

)on*ersi string -e tipe lainnya
*tring da%at berisi data dengan ti%e &ain se%erti ang!a. #ontoh %5C88%. cstdlib
(stdlib.h) &ibrar$ en$edia!an L 5ungsi $ang da%at enangani ha& tersebut 6
at#") convert! !tring to int ty"e-
3
at#l) convert! !tring to lon! ty"e-
at#f) convert! !tring to loat ty"e-
.ungsiA5ungsi ini eneria 1 %araeter dan engeba&i!an ni&ain$a !eda&a ti%e $ang
diinta (int, &ong or 5&oat). .ungsi ini di!obinasi!an dengan etode getline %ada cin.
Contoh 2 Futput 2
// cin and ato. functions =nter price: )".(
#include !iostream"h# =nter quantitG: )+
#include !stdlib"h# Eotal price: 48.84
int main $%
&
char mybuffer H+--I;
float price;
int Uuantity;
cout !! 6>nter priceG 6;
cin"getline $mybuffer,+--%;
price ' atof $mybuffer%;
cout !! 6>nter UuantityG 6;
cin"getline $mybuffer,+--%;
Uuantity ' atoi $mybuffer%;
cout !! 6Aotal priceG 6 !! priceBUuantity;
return -;
>
<ungsi untu- manipulasi string
cstring &ibrar$ (string"h) ende5inisi!an ban$a! 5ungsi untu! o%erasi ani%u&asi,
diantaran$a6
str%at) char/ strcat (char/ dest, const char/ src);
A""end! src !tring at the end o# dest !tring- 5eturn! dest-
str%mp) int strcmp (const char/ string1, const char/ string#);
Com"are! !tring! string1 and string2- 5eturn! - i! both !tring! are e&ual-
str%p$) char/ strcpG (char/ dest, const char/ src);
Co"ie! the content o# src to dest- 5eturn! dest-
strle&) siFe_t strlen (const char/ string);
5eturn! the length o# string-

#ttn 6 charP saa dengan charNO
3'
=ointer
Gariabe& eru%a!an suatu ni&ai $ang disi%an da&a eor$ $ang da%at dia!ses dengan
identi5ier. Gariabe& ini sesunggunhn$a disi%an %ada suatu a&aat dida&a eor$. Diana
setia% a&aat eor$ a!an berbeda dengan $ang &ainn$a (uni!).
Fperator Glamat (Gddress operator (1))
'ada saat %ende!&arasian 4ariab&e, user tida! diharus!an enentu!an &o!asi sesungguhn$a
%ada eor$, ha& ini a!an di&a!u!an secara otoatis o&eh !o%i&erdan o%erating s$se %ada
saat runAtie. Bi!a ingin engetahui diana suatu 4ariab&e a!an disi%an, da%at di&a!u!an
dengan eberi!an tanda a%ersand (D) dide%an 4ariab&e , $ang berarti "address of".
#ontoh 6
ted ' Dandy;
A!an eberi!an 4ariab&e ted a&aat dari 4ariab&e andG, !arena 4ariab&e andG diberi
a1a&an !ara!ter a%ersand (D), a!a $ang en"adi %o!o! disini ada&ah a&aat da&a eor$,
bu!an isi 4ariab&e. Misa&!an andG di&eta!!an %ada a&aat 5889 !eudian ditu&is!an instru!si
sbb 6
andy ' )(;
fred ' andy;
ted ' Dandy;
Ma!a hasi&n$a 6
Fperator 3eference (/)
Dengan engguna!an %ointer, !ita da%at enga!ses ni&ai $ang tersi%an secara &angsung
dengan eberi!an a1a&an o%erator asteris! (F) %ada identi5ier %ointer, $ang berarti "*alue
pointed +y". #ontoh 6
beth ' Bted;
(da%at di!ata!an6>beth saa dengan ni&ai $ang ditun"u! o&eh ted>) beth J *4, !arena ted
dia&aat 5889, dan ni&ai $ang berada %ada a&aat 5889 ada&ah *4.
4(
,!s%resi diba1ah ini seuan$a benar, %erhati!an 6
andy '' )(
Dandy '' +../
ted '' +../
Bted '' )(
,!s%resi %ertaa eru%a!an assignation bah1a andG#*4;. Kedua, engguna!an o%erator
a&aat (address8dere5ence o%erator (D)), sehingga a!an engeba&i!an a&aat dari 4ariabe&
andG. Ketiga berni&ai benar !arena assignation untu! ted ada&ah ted # 1andG;. Kee%at
engguna!an re5erence o%erator (B) $ang berarti ni&ai $ang ada %ada a&aat $ang ditun"u!
o&eh ted, $aitu *4. Ma!a e!s%resi diba1ah ini %un a!an berni&ai benar 6
Bted '' andy
De!&arasi 4ariab&e berti%e %ointer
.orat de!&arasi %ointer 6
type * pointer_name;
Diana type eru%a!an ti%e dari data $ang ditun"u!, bu!an ti%e dari %ointerAn$a. #ontoh 6
int B number;
char B character;
float B greatnumber;
Contoh 2
// my first pointer
#include !iostream"h#
int main $%
& int Oalue+ ' (, Oalue) ' +(;
int B mypointer;
mypointer ' DOalue+;
Bmypointer ' +-;
mypointer ' DOalue);
Bmypointer ' )-;
cout !! 6Oalue+''6 !! Oalue+ !! 6K Oalue)''6 !! Oalue);
return -;
>
41
Futput 2
'alue5##5$ / 'alue*##*$
'erhati!an bagaiana ni&ai dari 'alue5 dan 'alue* diubah secara tida! &angsung. 'ertaa
mGpointer diberi!an a&aat 'alue5 dengan engguna!an tanda a%ersand (D). Keudian
eberi!an ni&ai 5$ !e ni&ai $ang ditun"u! o&eh mGpointer, $aitu a&aat dari 'alue5, a!a
secara tida! &angsung 'alue5 te&ah diodi5i!asi. Begitu %u&a untu! *alueC.
Contoh 2
// more pointers
#include !iostream"h#
int main $%
&
int Oalue+ ' (, Oalue) ' +(;
int Bp+, Bp);
p+ ' DOalue+; // p1 / address of value1
p) ' DOalue); // p# / address of value#
Bp+ ' +-; // value pointed by p1 / 1"
Bp) ' Bp+; // value pointed by p# / value pointed by p1
p+ ' p); // p1 / p# 0value of pointer copied1
Bp+ ' )-; // value pointed by p1 / #"

cout !! 6Oalue+''6 !! Oalue+ !! 6K Oalue)''6 !! Oalue);
return -;
>
Futput 2
'alue5##5$ / 'alue*##*$
Arra$ dan 'ointer
-denti5ier suatu arra$ eQui4a&en dengan a&aat dari e&een %ertaa, %ointer eQui4a&en
dengan a&aat e&een %ertaa $ang ditun"u!. 'erhati!an de!&arasi beri!ut 6
int numbers H)-I;
int B p;
a!a de!&arasi diba1ah ini "uga benar 6
p ' numbers;
p dan numbers eQui4a&en, dan ei&i!i si5at (%ro%erties) $ang saa. 'erbedaann$a, user
da%at enentu!an ni&ai &ain untu! %ointer p diana numbers a!an se&a&u enun"u! ni&ai $ang
saa se%erti $ang te&ah dide5inisi!an. p, eru%a!an 4ariab&e %ointer, numbers ada&ah
constant %ointer. Karena itu 1a&au%un instru!si diatas benar, teta%i tida! untu! instru!si
diba1ah ini 6
numbers ' p;
!arena numbers ada&ah arra$ (constant %ointer), dan tida! ada ni&ai $ang da%at diberi!an
untu! identi5ier !onstant (constant identi5iers).
42
Contoh 2 Futput 2
// more pointers 5$, *$, +$, "$, 4$,
#include !iostream"h#
int main $%
&
int numbersH(I;
int B p;
p ' numbers; Bp ' +-;
p**; Bp ' )-;
p ' DnumbersH)I; Bp ' 0-;
p ' numbers * 0; Bp ' 2-;
p ' numbers; B$p*2% ' (-;
for $int n'-; n!(; n**%
cout !! numbersHnI !! 6, 6;
return -;
>
-nisia&isasi 'ointer
#ontoh 6
int number;
int Btommy ' Dnumber;
,Qui4a&en dengan 6
int number;
int Btommy;
tommy ' Dnumber;
*e%erti %ada arra$, inisia&isasi isi dari %ointer da%at di&a!u!an dengan de!&arasi se%erti
contoh beri!ut 6
char B terry ' 6hello6;
Misa&!an 6hello6 disi%an %ada a&aat 17+D dan seterusn$a, a!a de!&arasi tadi da%at
digabar!an sbb 6
terry berisi ni&ai 58$* dan bu!an (h( atau %hello%, 1a&au%un 58$* enun"u! %ada
!ara!ter tersebut. *ehingga "i!a a!an di&a!u!an %erubahan %ada !ara!ter (o( diganti
dengan tanda (7( maka ekspresi yang digunakan ada ) macam G
terryH2I ' 4C4;
B$terry*2% ' 4C4;
43
'enu&isan terrGJ"K dan /(terrG-"), e%un$ai arti $ang saa. Bi!a digabar!an 6
=ointer Grithmati-a
#ontoh, char eer&u!an 1 b$te, short eer&u!an D b$tes dan &ong eer&u!an I.
Terda%at L buah %ointer 6
char Bmychar;
short Bmyshort;
long Bmylong;
e!s%resi diatas a!an enun"u! %ada &o!asi dieor$ asingAasing 5$$$, *$$$ and +$$$,
sehingga "i!a ditu&is!an 6
mychar**;
myshort**;
mylong**;
$char, a!an berni&ai +--+, myshort berni&ai )--), dan mylong berni&ai 0--2. A&asann$a
ada&ah !eti!a ter"adi %ertabahan a!a a!an ditabah!an dengan ti%e $ang saa se%erti
$ang dide5inisi!an beru%a u!uran da&a b$tes.
'erhati!an e!s%resi diba1ah ini 6
Bp**;
Bp** ' BU**;
,!s%resi %ertaa eQui4a&en dengan F(%33) dan $ang di&a!u!an ada&ah enabah!an p ($aitu
a&aat $ang ditun"u!, bu!an ni&ai $ang di!andungn$a).
,!s%resi !edua, $ang di&a!u!an %ertaa ada&ah eberi!an ni&ai BU !e Bp dan !eudian
!eduan$a ditabah!an 1 atau dengan !ata &ain 6
Bp ' BU;
p**;
U**;
44
4oid %ointer
Ti%e %ointer 4oid eru%a!an ti%e !husus. 4oid %ointers da%at enun"u! %ada ti%e data
a%a%un, ni&ai integer 4a&ue atau 5&oat, au%un string atau !ara!ter. Keterbatasann$a ada&ah
tida! da%at engguna!an o%erator asteris! (F), !arena %an"ang %ointer tida! di!etahui,
sehingga di%er&u!an o%erator t$%e casting atau assignations untu! engeba&i!an ni&ai 4oid
%ointer !eti%e data sebenarn$a.
Contoh 2
// integer increaser
#include !iostream"h#
Ooid increase $OoidB data, int type%
&
switch $type%
&
case si5eof$char% G $B$$charB%data%%**; break;
case si5eof$short%G $B$$shortB%data%%**; break;
case si5eof$long% G $B$$longB%data%%**; break;
P
P
int main $%
&
char a ' (;
short b ' 3;
long c ' +);
increase $Da,si5eof$a%%;
increase $Db,si5eof$b%%;
increase $Dc,si5eof$c%%;
cout !! $int% a !! 6, 6 !! b !! 6, 6 !! c;
return -;
>
Futput 2
9, 5$, 5+
'ointer untu! 5unctions
#33 e%erbo&eh!an o%erasi dengan %ointer %ada 5unction. Kegunaan $ang utaa ada&ah
untu! eberi!an satu 5unction sebagai %araeter untu! 5unction &ainn$a. De!&arasi %ointer
untu! 5unction saa se%erti %rotot$%e 5unction !ecua&i naa 5unction ditu&is!an diantara
tanda !urung () dan o%erator asteris! (F) diberi!an sebe&u naa.
Contoh 2
// pointer to functions
#include !iostream"h#
int addition $int a, int b%
& return $a*b%; P
int subtraction $int a, int b%
& return $a,b%; P
45
int $Bminus%$int,int% ' subtraction;
int operation $int 1, int y, int $Bfunctocall%$int,int%%
&
int g;
g ' $Bfunctocall%$1,y%;
return $g%;
P
int main $%
&
int m,n;
m ' operation $., (, addition%;
n ' operation $)-, m, minus%;
cout !!n;
return -;
>
Futput 2
>
Dari contoh diatas, minus eru%a!an %ointer g&oba& untu! 5unction $ang e%un$ai D
%araeters berti%e int, !eudian diberi!an untu! enun"u! 5unction subtraction, ditu&is
da&a satu baris instru!si 6
int (F inus)(int,int) J subtraction?
46
Structures
8ata structures
*tru!tur data eru%a!an !u%u&an berbagai ti%e data $ang ei&i!i u!uran $ang berbeda di
!e&o%o!an da&a satu de!&arasi uni!, dengan 5orat sbb 6
struct model_name {
type1 element1;
type# element#;
type3 element3;
.
.
} ob2ect_name;
diana ode&Knae ada&ah naa untu! ode& ti%e stu!turn$a dan %araeter o%tiona&
ob"ectKnae eru%a!an identi5ier $ang 4a&id untu! ob"e! stur!tur. Diantara !urung !ura1a&
= @ beru%a ti%e dan subAidenti5ier $ang engacu !e e&een %ebentu! stru!tur. Bi!a
%ende5inisian stu!tur en$erta!an %araeter ode&Knae (o%tiona&), a!a %araeter
tersebut a!an en"adi naa ti%e $ang 4a&id e!ui4a&en dengan stru!tur. #ontoh 6
struct products &
char name H0-I;
float price;
P ;
products apple;
products orange, melon;
Dide5inisi!an ode& stru!tur products dengan dua 5ie&d 6 name dan price, dengan
ti%e $ang berbeda. Keudian ti%e stru!tur tadi (products) diguna!an untu! ende!&arasi!an
tiga ob"e! 6 apple, orange dan melon.
Keti!a dide!&arasi!an, products en"adi tnaa ti%e $ang 4a&id se%erti ti%e dasar int,
char atau short dan da%at ende!&arasi!an ob"ects (4ariab&es) dari ti%e tersebut. /%tiona&
5ie&d $aitu ob"ectKnae da%at ditu&is!an %ada a!hir de!&arasi stru!tur untu! secara &angsung
ende!&arasi!an ob"ect dari ti%e stru!tur. #ontoh 6
struct products &
char name H0-I;
float price;
P apple, orange, melon;
*angat %enting untu! ebeda!an antara structure model, dan structure ob"ect. ode&
ada&ah t$%e, dan ob"ect ada&ah 4ariab&e. Kita da%at ebuat ban$a! ob"ects (4ariab&es) dari
satu ode& (t$%e).
Contoh 2
// example about structures
#include !iostream"h#
#include !string"h#
#include !stdlib"h#
47
struct moOiesVt &
char title H(-I;
int year;
P mine, yours;
Ooid printmoOie $moOiesVt moOie%;
int main $%
&
char buffer H(-I;
strcpy $mine"title, 6)--+ A Space Odyssey6%;
mine"year ' +3/Q;
cout !! 6>nter titleG 6;
cin"getline $yours"title,(-%;
cout !! 6>nter yearG 6;
cin"getline $buffer,(-%;
yours"year ' atoi $buffer%;
cout !! 6My faOourite moOie isG9n 6;
printmoOie $mine%;
cout !! 6And yoursG9n 6;
printmoOie $yours%;
return -;
P
Ooid printmoOie $moOiesVt moOie%
&
cout !! moOie"title;
cout !! 6 $6 !! moOie"year !! 6%9n6;
P
Futput 2
=nter title: Alien
=nter Gear: +3.3
QG a'ourite mo'ie is:
*$$5 , Opace RdGsseG (5C9>)
,nd Gours:
,lien (5C8C)
#ontoh diatas en"e&as!an bagaiana engguna!an e&een dari stru!tur dan stru!tur itu
sendiri sebagai 4ariab&e nora&. #ontoh, yours.year eru%a!an 4ariab&e 4a&id dengan ti%e int,
dan mine.title eru%a!an arra$ 4a&id dari 2+ chars.
'erhati!an mine dan yours "uga ber&a!u sebagai 4a&id 4ariab&e dari ti%e mo*ies,t !eti!a diA
%ass !eA5unction printmo*ie(). *a&ah satu !euntungan dari structures $aitu !ita da%at
engacu %ada setia% e&eenn$a atau !ese&uruhan b&o! stru!tur.
4
Contoh 2
// array of structures
#include !iostream"h#
#include !stdlib"h#
#define NVMOW=>S (
struct moOiesVt &
char title H(-I;
int year;
P films HNVMOW=>SI;
Ooid printmoOie $moOiesVt moOie%;
int main $%
&
char buffer H(-I;
int n;
for $n'-; n!NVMOW=>S; n**%
&
cout !! 6>nter titleG 6;
cin"getline $filmsHnI"title,(-%;
cout !! 6>nter yearG 6;
cin"getline $buffer,(-%;
filmsHnI"year ' atoi $buffer%;
P
cout !! 69nRou haOe entered these moOiesG9n6;
for $n'-; n!NVMOW=>S; n**%
printmoOie $filmsHnI%;
return -;
P
Ooid printmoOie $moOiesVt moOie%
&
cout !! moOie"title;
cout !! 6 $6 !! moOie"year !! 6%9n6;
>

Futput 2
=nter title: Alien
=nter Gear: +3.3
=nter title: lade ;unner
=nter Gear: +3Q)
=nter title: Matri1
=nter Gear: +333
=nter title: ;ear ?indow
=nter Gear: +3(2
=nter title: Aa1i @riOer
=nter Gear: +3.(

Bou ha'e entered these mo'ies:
,lien (5C8C)
6lade Aunner (5C>*)
Qatrix (5CCC)
Aear Pindo< (5C4")
4'
Eaxi Sri'er (5C84)
=ointer to structure
*aa se%erti %ada ti%e &ainn$a, stru!tur "uga da%at ditun"u! o&eh %ointer. Aturann$a saa
untu! setia% ti%e data. 'ointer harus dide!&arasi!an sebagai %ointer untu! stru!tur 6
struct moOiesVt &
char title H(-I;
int year;
P;
moOiesVt amoOie;
moOiesVt B pmoOie;
amo*ie eru%a!an ob"ect dari ti%e struct mo'ies_t dan pmo'ie ada&ah %ointer untu!
enun"u! !e ob"e! dari ti%e struct mo'ies_t. a!a, de!&arasi diba1ah ini "uga benar
6
pmoOie ' DamoOie;
Contoh 2
// pointers to structures
#include !iostream"h#
#include !stdlib"h#
struct moOiesVt &
char title H(-I;
int year;
P;
int main $%
&
char bufferH(-I;
moOiesVt amoOie;
moOiesVt B pmoOie;
pmoOie ' D amoOie;
cout !! 6>nter titleG 6;
cin"getline $pmoOie,#title,(-%;
cout !! 6>nter yearG 6;
cin"getline $buffer,(-%;
pmoOie,#year ' atoi $buffer%;
cout !! 69nRou haOe enteredG9n6;
cout !! pmoOie,#title;
cout !! 6 $6 !! pmoOie,#year !! 6%9n6;
return -;
>
Futput 2
=nter title: Matri1
=nter Gear: +333

Bou ha'e entered:
Qatrix (5CCC)
5(
/%erator .> eru%a!an o%erator %enun"u! $ang diguna!an secara !husus bersaa dengan
%ointer untu! stru!tur dan %ointer untu! c&ass. Meung!in!an !ita untu! tida! engguna!an
tanda !urung %ada setia% anggota stru!tur $ang ditun"u!. Da&a contoh diguna!an 6
pmoOie,#title
Atau da&a %enu&isan $ang &ain 6
$BpmoOie%"title
Kedua e!s%resi tersebut diatas 6 pmo'ie.>title dan (/pmo'ie).title benar dan
berarti e4a&uasi e&een title dari stru!tur $ang ditun"u! (%ointed b$) pmo'ie. 7arus
dibeda!an dari 6
BpmoOie"title
Cang e!ui4a&en dengan 6
B$pmoOie"title%
Diba1ah ini eru%a!a tabe& rang!uan, !obinasi $ang ung!in ter"adi antara %ointer dan
stru!tur 6
Express"#& Des%r"pt"#& E(u"'ale&t
pmo'ie.title
)lement title o# !tructure pmo'ie

pmo'ie.>title
)lement title o# !tructure "ointed by
pmo'ie
$BpmoOie%"title
/pmo'ie.title
Ealue "ointed by element title o# !tructure
pmo'ie
B$pmoOie"title%
;esting structures
*truture "uga da%at berbentu! nested (bersarang) sehingga suatu e&een dari suatu
stru!tur da%at en"adi e&een %ada stru!tur $ang &ain 6
struct moOiesVt &
char title H(-I;
int year;
P
struct friendsVt &
char name H(-I;
char email H(-I;
moOiesVt faOouriteVmoOie;
P charlie, maria;
friendsVt B pfriends ' Dcharlie;
*ete&ah de!&arasi diatas, da%at diguna!an e!s%resi sbb 6
charlie"name
maria"faOouriteVmoOie"title
charlie"faOouriteVmoOie"year
pfriends,#faOouriteVmoOie"year
51
$*imana 2 ek!"re!i terakhir ekuivalen%
5ser defined data types
8efinition of o.n types (tGpede).
#33 eung!in!an !ita untu! ende5inisi!an ti%e berdasar!an ti%e data $ang sudah ada.
Hntu! itu diguna!an !e$1ord tGpede, dengan 5orat 6
tGpede existing_type new_type_name ;
diana existing_type ada&ah ti%e data dasar %ada #33 dan new_type_name ada&ah naa
dari ti%e baru $ang dide5inisi!an. #ontoh 6
typedef char M;
typedef unsigned int ?O;@;
typedef char B stringVt;
typedef char field H(-I;
#ontoh diatas te&ah ende5inisi!an e%at ti%e data baru 6 T, PRAS, strin!_t dan ield
sebagai char, unsi!ned int, char/ dan charJ4$K yang akan digunakan nanti
seperti berikut 6
M achar, anotherchar, Bptchar+;
?O;@ myword;
stringVt ptchar);
field name;
5nion
Hnion eung!in!an bagian dari eor$ da%at dia!ses sebagai ti%e data $ang berbeda,
1a&au%un %ada dasarn$a ere!a berada %ada &o!asi $ang saa di eor$. 'ende!&arasian dan
%enggunaan$a ha%ir saa dengan stru!tur teta%i secara 5ungsiona& berbeda 6
union model_name {
type1 element1;
type# element#;
type3 element3;
.
.
} ob2ect_name;
*eua e&een %ada de!&arasi union dec&aration ene%ati te%at $ang saa dieor$.
H!uran $ang diguna!an diabi& dari ti%e $ang %a&ing besar. #ontoh 6
union mytypesVt &
char c;
int i;
float f;
P mytypes;
Mende5inisi!an tiga e&een 6
mytypes"c
mytypes"i
mytypes"f
52
Tia% data ei&i!i ti%e $ang berbeda, !arena ene%ati &o!asi $ang saa deor$, a!a
%erubahan terhada% satu e&een a!an e%engaruhi e&een $ang &ain.
*a&ah satu !egunaan union, eung!in!an untu! enggabung!an ti%e dasar dengan suatu
arra$ atau stru!tur dari e&een $ang &ebih !eci&. #ontoh 6
union mi1Vt&
long l;
struct &
short hi;
short lo;
P s;
char cH2I;
P mi1;
Mende5inisi!an tiga naa $ang eung!in!an !ita untu! enga!ses gru% I b$tes $ang saa 6
mix.l, mix.s dan mix.c dan da%at diguna!an enutut bagaiana !ita a!an enga!sesn$a,
sebagai lon!, short atau char. Ti%e data $ang sudah digabung!an, arra$s dan structures
da&a suatu union, a!a diba1ah ini eru%a!an cara %enga!sesAan $ang berbeda 6
53
Gnonymous unions
'ada #33 terda%at o%tion unions tan%a naa (anon$ous union). Bi!a diserta!an union da&a
structure tan%a naa ob"e!($ang ditu&is!an sete&ah !urung !ura1a& = @) a!a union a!an tida!
ei&i!i naa dan !ita da%at enga!ses e&eenn$a secara &angsung dengan naan$a. #ontoh6
u&"#&
struct &
char titleH(-I;
char authorH(-I;
union &
float dollars;
int yens;
P price;
> book@
a&#&$m#us u&"#&
struct &
char titleH(-I;
char authorH(-I;
union &
float dollars;
int yens;
P;
> book@
'erbedaan de!&arasi diatas ada&ah %rogra %ertaa diberi naa %ada union (price) dan $ang
!edua tida!. 'ada saat enga!ses anggota dollars dan Gens dari ob"e!. 'ada %rogra
%ertaa 6
book"price"dollars
book"price"yens
*edang!an untu! %rogra !edua 6
book"dollars
book"yens
Classes
#&ass ada&ah etode &ogica& untu! organisasi data dan 5ungsi da&a stru!tur $ang saa. #&ass
dide!&arasi!an engguna!an !e$1ord class, $ang secara 5ungsiona& saa dengan !e$1ord
struct, teta%i dengan !eung!inan %en$ertaan 5ungsi sebagai anggota, 5oratn$a sbb 6
class class_name {
permission_label_1G
member1;
permission_label_#G
member#;
...
} ob2ect_name;
Diana class_name ada&ah naa c&ass(user de5ined t$%e) dan 5ie&d o%tiona& object_name
ada&ah satu atau bebera%a identi5ier ob"e! $ang 4a&id. Bod$ dari de!&arasi berisi!an
members, $ang da%at beru%a data atau%un de!&arasi 5ungsi, dan permission labels
$optional%, da%at beru%a satu dari tiga !e$1ord beri!ut 6 pri'ate:, public: atau
protected:. Diguna!an untu! enentu!an batasan a!ses terhada% ebers $ang ada
6
54
pri*ate , anggota c&ass da%at dia!ses dari danggota &ain %ada !e&as $ang saa atau
dari c&ass >5riend>.
protected , anggota da%at dia!ses dari anggota c&ass $ang saa atau c&ass
5riend , dan "uga dari anggota c&ass turunann$a(deri4ed).
pu+lic , anggota da%at dia!ses dari c&ass ana%un.
De5au&t %erission &abe& 6 pri'ate
#ontoh 6
class M;ectangle &
int 1, y;
publicG
Ooid setVOalues $int,int%;
int area $Ooid%;
P rect;
De!&arasi c&ass C3ectangle dan ob"ect bernaa rect. #&ass ini berisi e%at anggota6
dua 4ariab&e berti%e int (/ and y) %ada bagian pri*ate (!arena %ri4ate ada&ah de5au&t
%erission) dan dua 5ungsi %ada bagian pu+lic 6 set,*alues() dan area(), diana han$a
dide!&arasi!an %ro%ot$%eKn$a.
'erhati!an %erbedaan antara naa c&assdan naa ob"ect. 'ada contoh sebe&un$a
TAectan!le ada&ah naa c&ass(contoh, userAde5ined t$%e), dan rect ada&ah ob"ect dari ti%e
TAectan!le. *aa ha&n$a dengan de!&arasi beri!ut 6
int a;
int ada&ah naa c&ass (t$%e) dan a ada&ah naa ob"ect(4ariab&e).
Contoh 2
// classes example
#include !iostream"h#
class M;ectangle &
int 1, y;
publicG
Ooid setVOalues $int,int%;
int area $Ooid% &return $1By%;P
P;
Ooid M;ectangleGGsetVOalues $int a, int b% &
1 ' a;
y ' b;
P
int main $% &
M;ectangle rect;
rect"setVOalues $0,2%;
cout !! 6areaG 6 !! rect"area$%;
>
55
Futput 2
area: 5*

7a& baru dari contoh diatas ada&ah o%erator 22 dari &ing!u% $ang diserta!an da&a
%ende5inisian set,*alues(). Diguna!an untu! ende!&arasi!an anggota dari c&ass di&uar c&ass
tersebut.
*co%e o%erator (::) ens%esi5i!asi!an c&ass diana anggota $ang dide!&arasi!an
berada, eberi!an sco%e %ro%erties $ang saa se%erti "i!a dide!&arasi!an secara &angsung
da&a c&ass.
Contoh 2
// class example
#include !iostream"h#
class M;ectangle &
int 1, y;
publicG
Ooid setVOalues $int,int%;
int area $Ooid% &return $1By%;P
P;
Ooid M;ectangleGGsetVOalues $int a, int b% &
1 ' a;
y ' b;
P
int main $% &
M;ectangle rect, rectb;
rect"setVOalues $0,2%;
rectb"setVOalues $(,/%;
cout !! 6rect areaG 6 !! rect"area$% !! endl;
cout !! 6rectb areaG 6 !! rectb"area$% !! endl;
>
Futput 2
rect area: 5*
rectb area: +$
'erhati!an %eanggi&an rect.area() tida! eberi!an hasi& $ang saa dengan %eanggi&an
rect+.area(). -ni disebab!an !arena ob"e! dari c&ass C3ectangle e%un$ai 4ariab&e sendiri,
/ dan y, dan 5ungsi set,*alue() dan area().

56
Constructor dan destructor
/b"e! biasan$a eer&!an inisia&isasi 4ariab&e atau enentu!an eori dinai! se&aa
%roses untu! enca%ai hasi& a!hie $ang dihara%!an dan enghindari %engeba&ian ni&ai $ang
tida! dihara%!an.
Hntu! engatasin$a da%at diguna!an 5ungsi s%esia& 6 constructor, $ang da%at dide!&arasi!an
dengan %eberian naa 5ungsi dengan naa $ang saa untu! c&ass. .ungsi dari constructor
ini a!an di%anggi& secara otoatis !eti!a instance baru dari sebuah c&ass dibuat. #ontoh 6
// classes example
#include !iostream"h#
class M;ectangle &
int width, height;
publicG
M;ectangle $int,int%;
int area $Ooid% &return $widthBheight%;P
P;
M;ectangleGGM;ectangle $int a, int b% &
width ' a;
57
height ' b;
P
int main $% &
M;ectangle rect $0,2%;
M;ectangle rectb $(,/%;
cout !! 6rect areaG 6 !! rect"area$% !! endl;
cout !! 6rectb areaG 6 !! rectb"area$% !! endl;
>
Futput 2
rect area: 5*
rectb area: +$
7asi& dari contoh diatas saa se%erti contoh sebe&un$a. Da&a ha& ini, han$a engganti!an
5ungsi set_'alues, $ang sudah tida! ada dengan c&ass constructor. 'erhati!an cara
%araeter diberi!an !e constructor %ada saat instance c&ass dibuat 6
M;ectangle rect $0,2%;
M;ectangle rectb $(,/%;
8estructor ber5ungsi !eba&i!ann$a. *ecara otoatis a!an di%anggi& "i!a ob"e! di !e&uar!an
dari eor$, atau%un !arena !eberadaann$a te&ah se&esai (contoh 6 "i!a dide5inisi!an sebuah
ob"e! &oca& da&a 5unction dan 5unction tersebut se&esai) atau !arena eru%a!an ob"e! $ang
secara dinais diteta%!an dan di!e&uar!an dengan engguna!an o%erator delete.
Destuctor harus e%un$ai naa $ang saa dengan c&ass, diberi a1a&an ti&e (U) dan tida!
engeba&i!an ni&ai. #ontoh 6
// example on constructors and destructors
#include !iostream"h#
class M;ectangle &
int Bwidth, Bheight;
publicG
M;ectangle $int,int%;
JM;ectangle $%;
int area $Ooid% &return $Bwidth B Bheight%;P
P;
M;ectangleGGM;ectangle $int a, int b% &
width ' new int;
height ' new int;
Bwidth ' a;
Bheight ' b;
P
M;ectangleGGJM;ectangle $% &
delete width;
delete height;
P
5
int main $% &
M;ectangle rect $0,2%, rectb $(,/%;
cout !! 6rect areaG 6 !! rect"area$% !! endl;
cout !! 6rectb areaG 6 !! rectb"area$% !! endl;
return -;
>
Futput 2
rect area: 5*
rectb area: +$
F*erloading Constructors
*aa ha&n$a se%erti 5ungsi, constructor "uga da%at e%un$ai naa $ang saa teta%i
e%un$ai "u&ah dan ti%e $ang berbeda %ada %araetern$a. 'ada saat %eanggi&an !o%i&er
a!an engAe!se!usi $ang sesuai %ada saat ob"e! c&ass di de!&arasi!an.
'ada !en$ataann$a, !eti!a dide!&arasi!an sebuah c&ass dan tida! disebut!an constructorn$a,
a!a !o%i&er secara otoatis a!an engasusi!an dua constructor o4er&oaded (>de5au&t
constructor> dan >co%$ constructor>). #ontoh 6
class M>1ample &
publicG
int a,b,c;
Ooid multiply $int n, int m% & a'n; b'm; c'aBb; P;
P;
Bi!a tan%a constructor, Ko%i&er secara otoatis engasusi!an anggotaAanggota 5ungsi
constructor beri!ut 6
4mpty constructor
Meru%a!an constructor tan%a %araeters dide5inisi!an sebagai nop (b&o! instru!si
!osong). Tida! e&a!u!an a%a%un.
#,Na%&e66#,Na%&e () = @?
Copy constructor
Meru%a!an constructor dengan satu %araeter dengan ti%e $ang saa $ang
diteta%!an untu! setia% anggota 4ariab&e c&ass nonstati! ob"e! $ang disa&in dari
ob"e! sebe&un$a.
M>1ampleGGM>1ample $const M>1ampleD rO% &
a'rO"a; b'rO"b; c'rO"c;
P
'enting untu! engetahui, bah1a !edua constructor de5au&t 6 e%t$ construction dan co%$
constructor ada "i!a tida! ada constructor &ain $ang dide!&arasi!an. Bi!a terda%at
constructor dengan se"u&ah %araeter dide!&arasi!an, a!a tida! satu%un dari
constructors de5au&t ini ada.
Contoh 2
// overloading class constructors
5'
#include !iostream"h#
class M;ectangle &
int width, height;
publicG
M;ectangle $%;
M;ectangle $int,int%;
int area $Ooid% &return $widthBheight%;P
P;
M;ectangleGGM;ectangle $% &
width ' (;
height ' (;
P
M;ectangleGGM;ectangle $int a, int b% &
width ' a;
height ' b;
P
int main $% &
M;ectangle rect $0,2%;
M;ectangle rectb;
cout !! 6rect areaG 6 !! rect"area$% !! endl;
cout !! 6rectb areaG 6 !! rectb"area$% !! endl;
>
Futput 2
rect area: 5*
rectb area: *4
#ontoh diatas rect+ dide!&arasi!an tan%a %araeter, sehingga diinisia&isasi!an dengan
constructor tan%a %araeters, $ang ende!&arasi!an .idth dan height dengan ni&ai A.
'erhati!an "i!a dide!&arasi!an ob"e! baru dan tida! diberi!an %araeter a!a tida!
di%er&u!an tanda !urung ()6
M;ectangle rectb; // right
M;ectangle rectb$%; // wrong3
3elationships +et.een classes
<riend functions (riend -ey.ord)
Terda%at tiga a!ses berbeda untu! anggota c&ass 6 pu+lic, protected dan pri*ate. Hntu!
anggota %rotected dan %ri4ate, tida! da%at dia!ses dari &uar 5ungsi diana ere!a
dide!&arasi!an. 0aun, aturan ini da%at di &e1ati dengan engguna!an !e$1ord 5riend da&a
c&ass, sehingga 5ungsi e!sterna& da%at enga!ses anggota protected dan pri*ate suatu
c&ass.
Hntu! itu, harus dide!&arasi!an %rotot$%e dari 5ungsi e!sterna& $ang a!an enga!ses,
#ontoh 6
// friend functions
#include !iostream"h#
6(
class M;ectangle &
int width, height;
publicG
Ooid setVOalues $int, int%;
int area $Ooid% &return $width B height%;P
friend M;ectangle duplicate $M;ectangle%;
P;
Ooid M;ectangleGGsetVOalues $int a, int b% &
width ' a;
height ' b;
P
M;ectangle duplicate $M;ectangle rectparam%
&
M;ectangle rectres;
rectres"width ' rectparam"widthB);
rectres"height ' rectparam"heightB);
return $rectres%;
P
int main $% &
M;ectangle rect, rectb;
rect"setVOalues $),0%;
rectb ' duplicate $rect%;
cout !! rectb"area$%;
@
Futput 2
*"
Dari 5ungsi duplicate, $aitu 5riend dari C3ectangle, da%at enga!ses anggota .idth dan
height untu! ob"e! $ang berbeda dari ti%e C3ectangle. 'erhati!an bah1a da&a de!&arasi
duplicate() au%un main() tida! di%ertibang!an a%a!ah duplicate eru%a!an anggota dari
c&ass C3ectangle. *ecara uu !eguanaan 5ungsi 5riend di&uar ethodo&og$ %erograan,
"adi "i!a eung!in!an sebai!n$a engguna!an anggota dari c&as $ang saa.
<riend classes (riend)
*e&ain da%at ende5inisi!an 5ungsi 5riend, da%at "uga dide5inisi!an c&ass sebagai 5riend dari
c&ass &ainn$a, sehingga eung!in!an c&ass !edua da%at enga!ses anggota protected dan
pri*ate c&ass %ertaa. #ontoh 6
// friend class
#include !iostream"h#
class MSUuare;
class M;ectangle &
int width, height;
publicG
int area $Ooid%
&return $width B height%;P
61
Ooid conOert $MSUuare a%;
P;
class MSUuare &
priOateG
int side;
publicG
Ooid setVside $int a%
&side'a;P
friend class M;ectangle;
P;
Ooid M;ectangleGGconOert $MSUuare a% &
width ' a"side;
height ' a"side;
P

int main $% &
MSUuare sUr;
M;ectangle rect;
sUr"setVside$2%;
rect"conOert$sUr%;
cout !! rect"area$%;
return -;
>
Futput 2
59
'ada contoh diatas, dide!&arasi!an C3ectangle sebagai 5riend dari CSQuare, sehingga
C3ectangle da%at enga!ses anggota protected dan pri*ate dari CSQuare, &ebih "e&asn$a
CSQuare22side, Mende5inisi!an &ebar dari !ota!.
Buga terda%at e%t$ %rotot$%e dari c&ass CSQuare dia1a& %rogra. Meru%a!an ha& $ang
%enting !arena da&a de!&arasi C3ectangle engacu !e%ada CSQuare (sebagai %araeter
da&a con*ert()). 'ende5inisian CSQuare diserta!an nanti, "i!a tida! diserta!an %ada
de!&arasi sebe&un$a untu! CSQuare, a!a c&ass ini tida! a!an ter&ihat da&a %ende5inisian
C3ectangle.
'nheritance +et.een classes
-nheritance eung!in!an !ita untu! ebuat ob"e! dari ob"e! sebe&un$a, sehingga
eung!in!an untu! en$erta!an bebera%a anggota ob"e! sebe&un$a ditabah dengan
anggota ob"e!n$a sendiri. #ontoh, ebuat c&ass untu! engetahui a%a!ah segi e%at
(TAectan!le%, atau (TErian!le%. MasingAasing e%un$ai ha& $ang saa $aitu, dasar dan
tinggi. Da%at dire%resentasi!an dengan c&ass THolG!on !eudian diturun!an en"adi
TAectan!le dan TErian!le.
62
#&ass C=olygon da%at berisi anggota $ang di%a!ai untu! setia% %o&$gon, da&a ha& ini .idth
dan height, dan C3ectangle dan C7riangle ada&ah c&ass turunann$a.
#&ass turunan a!an enurun!an se&uruh anggota $ang dii&i!i o&eh c&ass dasar(%arent)n$a.
Badi "i!a c&ass %aret e%un$ai anggota G dan diturun!an %ada c&ass &ain dengan anggota
J,a!a c&as turunan ini a!an ei&i!i G dan J.
Hntu! enurun!an c&ass, engguna!an o%erator : (co&on) %ada saat de!&arasi, s$ntaN 6
class derived_class_name: public base_class_name;
Diana deri4edKc&assKnae ada&ah naa dari deri4ed c&ass dan baseKc&assKnae ada&ah
naa dari c&ass asa&. pu+lic da%at diganti!an dengan ti%e a!ses &ainn$a 6 protected atau
pri*ate, #ontoh6
// derived classes
#include !iostream"h#
class M<olygon &
protectedG
int width, height;
publicG
Ooid setVOalues $int a, int b%
& width'a; height'b;P
P;
class M;ectangleG public M<olygon &
publicG
int area $Ooid%
& return $width B height%; P
P;
class MAriangleG public M<olygon &
publicG
int area $Ooid%
& return $width B height K )%; P
P;

int main $% &
M;ectangle rect;
MAriangle trgl;
rect"setVOalues $2,(%;
trgl"setVOalues $2,(%;
cout !! rect"area$% !! endl;
cout !! trgl"area$% !! endl;
return -;
>
63
Futput 2
*$
5$
#&ass C3ectangle dan C7riangle asingAasing engandung anggota dari C=olygon, $aitu 6
.idth, height dan set,*alues().
Rang!uan ti%e a!ses dan anggota $ang bisa enga!sesn$a 6
A%%ess
public protected priOate
member! o# the !ame cla!! ye! ye! ye!
member! o# derived cla!!e! ye! ye! no
notCmember! ye! no no
Diana >notAebers> ere%resentasi!an re5erensi dari &uar c&ass, se%erti dari main(), dari
c&ass &ain atau dari 5ungsi &ain bai! g&oba& atau%un &oca&.
'ada contoh diatas, anggota $ang diturun!an !e%ada TAectan!le dan TErian!le dii!uti
dengan ha! a!ses $ang saa dengan c&ass asa&n$a, THolG!on6
M<olygonGGwidth // protected access
M;ectangleGGwidth // protected access
M<olygonGGsetVOalues$% // public access
M;ectangleGGsetVOalues$% // public access
-ni dia!ibat!an !arena enurun!an c&ass sebagai public 6
class M;ectangleG public M<olygon;
!hat is inherited from the +ase classR
'ada dasarn$a setia% anggota dari c&ass dasar diturun!an !e%ada c&ass turunann$a, !ecua&i 6
Constructor and destructor
operatorK() mem+er
friends

Bi!a c&ass dasar tida! e%un$ai de5au&t constructor atau a!an e&a!u!an %eanggi&an
terhada% constructor o4er&oaded !eti!a ob"e! turunan $ang baru dibuat a!a da%at
ditu&is!an da&a setia% de5inisi constructor dari c&ass turunan6
deriOedVclassVname $parameters% G baseVclassVname
$parameters% &P
#ontoh 6
// constructors and derivated classes
#include !iostream"h#
class mother &
publicG
mother $%
& cout !! 6motherG no parameters9n6; P
mother $int a%
& cout !! 6motherG int parameter9n6; P
64
P;
class daughter G public mother &
publicG
daughter $int a%
& cout !! 6daughterG int parameter9n9n6; P
P;
class son G public mother &
publicG
son $int a% G mother $a%
& cout !! 6sonG int parameter9n9n6; P
P;
int main $% &
daughter cynthia $+%;
son daniel$+%;

return -;
>
Futput 2
mother: no parameters
dau!hter: int parameter
mother: int parameter
son: int parameter
Ter&ihat %erbedaan ana $ang eru%a!an constructor dari other $ang di%anggi& !eti!a
ob"e! dau!hter dibuat dan !eti!a ob"e! son dibuat. <erbedaannya disebabkan
dari deklarasi untuk dau!hter dan son6
daughter $int a% // nothing specified: call
default constructor
son $int a% G mother $a% // constructor specified: call
this one
Sultiple inheritance
Da&a #33 eung!in!an untu! enurun!an 5ie&d atau ethod dari satu atau &ebih c&ass
dengan engguna!an o%erator !oa da&a de!&arasi c&ass turunan. #ontoh, a!an dibuat c&ass
untu! ena%i&!an di&a$ar (TRutput) dan a!an diturun!an !e c&ass TAectan!le and
TErian!le a!a da%at ditu&is!an 6
class M;ectangleG public M<olygon, public MOutput &
class MAriangleG public M<olygon, public MOutput &
#ontoh 6
// multiple inheritance
#include !iostream"h#
class M<olygon &
protectedG
int width, height;
publicG
Ooid setVOalues $int a, int b%
& width'a; height'b;P
65
P;
class MOutput &
publicG
Ooid output $int i%; P;
Ooid MOutputGGoutput $int i% &
cout !! i !! endl; P
class M;ectangleG public M<olygon, public MOutput &
publicG
int area $Ooid%
& return $width B height%; P
P;
class MAriangleG public M<olygon, public MOutput &
publicG
int area $Ooid%
& return $width B height K )%; P
P;

int main $% &
M;ectangle rect;
MAriangle trgl;
rect"setVOalues $2,(%;
trgl"setVOalues $2,(%;
rect"output $rect"area$%%;
trgl"output $trgl"area$%%;
return -;
@
Futput 2
*$
5$
66

Anda mungkin juga menyukai