C++ programlamada, “struct” (structure) veri türü, bir veya birden fazla farklı veri türünden oluşan bir veri grubunu tanımlamak için kullanılır. Bu, farklı veri türlerini tek bir yapı içinde birleştirerek, ilgili verileri organize etmenin ve gruplandırmanın bir yolunu sağlar.
Bir struct tanımlanırken, struct anahtar kelimesi kullanılır. Örnek bir struct tanımı şu şekildedir:
#include <iostream> using namespace std; // Bir struct tanımı struct Ogrenci { string ad; int yas; float notOrtalamasi; }; int main() { // Ogrenci struct'ından bir nesne oluşturma Ogrenci ogrenci1; // Nesnenin alanlarına değer atama ogrenci1.ad = "Ahmet"; ogrenci1.yas = 20; ogrenci1.notOrtalamasi = 85.5; // Verilere erişme cout << "Ad: " << ogrenci1.ad << endl; cout << "Yaş: " << ogrenci1.yas << endl; cout << "Not Ortalaması: " << ogrenci1.notOrtalamasi << endl; return 0; }
Bu örnekte, “Ogrenci” isimli bir struct tanımlanmıştır ve bu struct içinde üç farklı türde veri bulunmaktadır: bir string (ad
), bir int (yas
) ve bir float (notOrtalamasi
). Daha sonra, bu struct’tan bir nesne oluşturularak, bu nesnenin alanlarına değer atandı ve bu değerlere erişilerek ekrana yazdırıldı. Struct’lar genellikle ilgili verileri bir araya getirmek ve düzenlemek için kullanılır.
C++ programlamada, struct ve sınıf (class) temel olarak aynı işlevselliğe sahiptir, ancak bazı farklar vardır.
Struct: Varsayılan olarak, struct üyeleri genellikle public
(kamusal) olarak kabul edilir. Yani, bir struct içindeki veri elemanlarına başka bir kod bloğundan doğrudan erişilebilir.
Sınıf (Class): Varsayılan olarak, sınıf üyeleri private
(özel) olarak kabul edilir. Yani, bir sınıf içindeki veri elemanlarına doğrudan erişim genellikle mümkün değildir.
Struct: Struct’larla kalıtım kullanılabilir, ancak kalıtımın varsayılan erişim düzeyi public
‘dir.
struct Base { int x; }; struct Derived : Base { int y; };
Sınıf (Class): Kalıtımın varsayılan erişim düzeyi private
‘dir. Yani, kalıtım yapıldığında, temel sınıfın üyeleri genellikle varsayılan olarak private
olarak kalır.
class Base { public: int x; }; class Derived : Base { int y; };