C++ programları genellikle iki tür dosyadan oluşur: başlık dosyaları (header files) ve kaynak dosyaları (source files). Bu iki dosya türü arasındaki farkları aşağıda açıklamaya çalışayım:
**Başlık Dosyaları (Header Files)
*
Başlık dosyaları genellikle `.h` uzantılıdır. Bu dosyalar genellikle deklarasyonları içerir. Yani, fonksiyon veya sınıfın varlığını ve nasıl kullanılacağını belirtirler, ancak gerçek kodlarını içermezler. Başlık dosyaları, kaynak dosyalarında fonksiyonların veya sınıfların gerçek kodlarına erişim sağlamak için kullanılır. Başlık dosyaları genellikle aşağıdaki türden içeriklere sahiptir:
```cpp
// Örnek bir başlık dosyası: example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H
class MyClass {
public:
void myFunction();
};
#endif
```
- `#ifndef` ve `#define` ön işlemcileri, başlık dosyasının birden fazla kez dahil edilmesini önlemek için kullanılır.
- Sınıf ve fonksiyonların deklarasyonları başlık dosyasında yer alır.
**Kaynak Dosyaları (Source Files)
*
Kaynak dosyaları genellikle `.cpp` uzantılıdır. Bu dosyalar, başlık dosyalarında tanımlanan fonksiyonların veya sınıfların gerçek kodlarını içerir. Yani, fonksiyonların işlevselliğini sağlayan kod burada yer alır. Kaynak dosyaları aynı zamanda `main()` fonksiyonunu da içerebilir.
```cpp
// Örnek bir kaynak dosyası: example.cpp
#include "example.h" // Başlık dosyasını dahil ediyoruz
void MyClass::myFunction() {
// Fonksiyonun gerçek kodu burada yer alır
}
int main() {
// Ana program burada yer alır
return 0;
}
```
- `#include "example.h"` ifadesi, başlık dosyasını kaynak dosyasına dahil eder ve bu sayede sınıf veya fonksiyonlara erişim sağlanır.
- Fonksiyonların gerçek kodları kaynak dosyasında yer alır.
Başlık dosyaları ve kaynak dosyalarının ayrılması, büyük projelerde kodun daha düzenli ve yönetilebilir olmasını sağlar. Başlık dosyaları, birimler arasındaki sınırları belirleyerek kodun yeniden kullanılabilirliğini ve bakımını kolaylaştırır.