Function merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari bagian program yang memanggilnya. Suatu bagian program yang memberikan perintah pada suatu function menerima hasil pekerjaan dari function tersebut dengan return nilai yang sesuai. Adapun beberapa programmer C++ menamai suatu function yang tidak memberikan nilai kembalian (returns nothing) disebut dengan istilah procedure.
Function merupakan komponen utama dalam C++, karena C++ sendiri dikembangkan dari kumpulan function. Dalam satu program C++ paling tidak terdapat satu buah function, yakni main() function itu sendiri.Keuntungan dari penggunaan function dalam program ialah tingkat readibility yang baik, terstruktur yang jelas, dan dapat menghindari masalah penulisan program yang berulang-ulang. Dalam C++ sendiri secara garis besar terdapat dua buah function, yakni library (function awal yang telah tersedia dalam C++) dan function yang didefinisikan sendiri oleh sang programmer.
Beberapa hal yang perlu diperhatikan dalam penggunaan function antara lain adalah.
- Bila jenis function tidak disebutkan, secara default C++ akan menganggapnya sebagai function integer
- Untuk function dengan output selain integer, diperlukan pendefinisian jenis function tersebut
- Untuk procedure (function that returns nothing) digunakan jenis data void
- Suatu function dapat menghasilkan nilai balik bagi pemanggilnya, dengan menggunakan return
Terdapat dua cara untuk melewatkan suatu parameter dalam C++ yakni pemanggilan dengan nilai dan pemanggilan dengan referensi.
Pemanggilan dengan Nilai (Call by Value)
- Dengan call by value, akan menyalin nilai dari parameter actual ke nilai parameter formal
- Informasi yang dikirimkan ke function adalah nilai dari datanya bukan alamat memory dari datanya
- Function yang menerima kiriman nilai tersebut akan menyimpannya di alamat yang terpisah dari nilai aslinya yang digunakan oleh bagian pemanggil function
- Perubahan nilai pada function (parameter formal) tidak akan mengubah nilai asli pada bahian program yang memanggilnya
- Pengiriman parameter call by value bersifat satu arah, yaitu dari bagian yang melakukan pemanggilan menuju function yang dipanggil
- Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variable, array atau juga constanta
Pemanggilan dengan Referensi (Call by Reference)
- Pemanggilan dengan referensi merupakan upaya untuk melewatkan suatu variable dalam function, dengan data yang dikirimkan ialah alamat letak dari nilai datanya
- Function yang menerima kiriman alamat data tersebut, akan menggunakan alamat tersebut untuk mendapatkan nilai datanya
- Perubahan nilai parameter formal pada function akan mengakibatkan perubahan nilai pada parameter actual
- Pemnggilan dengan referensi bersifat dua arah, dari bagian program yang melakukan pemanggilan menuju function yang dipanggil, dan berlaku juga sebaliknya
- Pengiriman secara acuan tidak dapat dilakukan untuk suatu ungkapan
Salah satu perbedaan mendasar antara call by value dengan call by reference ialah pada deklarasi parameter yang digunakan. Pada call by reference jenis data dapat diikuti dengan tanda gabung & untuk menandakan bahwa parameter tersebut dilewatkan menggunakan referensi.