C++ 'da fonksiyon kullanılmadan önce bildirilmeli ya da tanımlanmalıdır. Ana kodumuzun üzerinde tüm fonksiyonlarımızı yazarak sayfa içerisinde kalabalığa sebep oluruz, bunu engellemek için fonksiyon bildirimlerinin (function prototypes) kullanıldığından bahsetmiştik. Bunlar da yeterince fazlalaşınca da header dosyalarına geçiş yapıyoruz.
Eğer ki fonksiyonun çağırılması bu bildirim ya da tanımlamadan önce yapılırsa compile time hatası dediğimiz hata tipiyle karşılaşırız:
Severity Code Description Project File Line Suppression State
Error (active) E0304 no instance of overloaded function "topla" matches the argument list Project1 E:\!Blog\C++ Dersleri\Project1\merhabadunya.cpp 14
#include <iostream> //int topla(int a,int b = 17); //int topla(int, int, int); int main() { int toplam = topla(5); // int toplam = 22; } int topla(int a, int b) // fonksiyon parametrelerine ulaşmak için isim veriyoruz { int sonuc = a + b; // sonuc adıyla int tipinde bir değişken tanımlayıp // a + b ye eşitliyoruz. return sonuc; // geri dönüş değerimizi belirliyoruz. } int topla(int a, int b, int c) { return a + b + c; }
int topla(int a, int b) // fonksiyon parametrelerine ulaşmak için isim veriyoruz { int sonuc = a + b; // sonuc adıyla int tipinde bir değişken tanımlayıp // a + b ye eşitliyoruz. return sonuc; // geri dönüş değerimizi belirliyoruz. } int main() { int toplam = topla(5, 17); // int toplam = 22; }
Prototip yazılırken fonksiyonun geri dönüş tipi int ve aldığı parametrelerin tipi (int,int) (adını yazma zorunluluğu yoktur) yazılmak zorundadır.
Header dosyası kullanımı içinse yapılması gereken yeni bir header file oluşturup tüm fonksiyon bildirimlerini içine yazmak ve ana kodumuz içerisinde #include "oluştuğumuz header dosyasının adı.h" yazarak ana kodumuza dahil edilmesini istememizdir.
int topla(int a,int b = 17); int topla(int, int, int);
#include <iostream> #include "matematik.h" int main() { int toplam = topla(5, 17); // int toplam = 22; } int topla(int a, int b) // fonksiyon parametrelerine ulaşmak için isim veriyoruz { int sonuc = a + b; // sonuc adıyla int tipinde bir değişken tanımlayıp // a + b ye eşitliyoruz. return sonuc; // geri dönüş değerimizi belirliyoruz. } int topla(int a, int b, int c) { return a + b + c; }
Hiç yorum yok:
Yorum Gönder