C++’daki veri tipleri üç grupta sınıflandırılır: User defined, Derived ve Built-in/ Primitive.
2- User Defined veri tipi
- Class (Sınıf) :
Sınıf, bir hedefler topluluğudur. Kullanıcı tanımlı bir toplu veri türüdür. Bir sınıf, aynı işlemlere ve niteliklere sahip bir nesne grubu olarak tanımlanabilir. “Sınıf”, C++ programlamasındaki bir anahtar kelimedir. Kullanıcı çeşitli nesnelerle uğraşmak yerine sınıflarla ilgilenir.
Syntax (Sözdizimi):
class Player { public: double length; string name; };
Örnek:
#include <iostream> #include <string> using namespace std; // Player class tanımı class Player { //Erişim belirteci public: //Değişken tanılama string myName; //Player sınıfının mesajını görüntüleyen fonksiyonu void SetMessage() { cout << "'Message' metodu çalıştı! Oyuncu adı:"<< myName << endl; } }; // Main fonksiyonu programın yürütülmesini başlatır int main() { Player _plyr; // _plyr adlı bir Player nesnesi oluşturduk _plyr.myName="Caner"; //'myName' değişkenine değer ataması yaptık _plyr.SetMessage(); //'SetMessage' fonksiyonunu çağırdık return 0; }
Çıktı:
'Message' metodu çalıştı! Oyuncu adı:
- Structure(Yapı)
Yapı, C / C ++ ‘da kullanıcı tanımlı bir veri türüdür. Bir yapı, muhtemelen farklı türdeki öğeleri tek bir türde gruplamak için kullanılabilecek bir veri türü oluşturur.
Syntax (Sözdizimi):
struct Player { char name[50]; int age; float salary; char city[50]; };
Örnek:
#include <iostream> using namespace std; struct Player { char name[50]; float weight; int age; }; int main() { Player plyr; cout << "Oyuncu Adı: "; cin.get(plyr.name, 50); cout << "Oyuncu Kilosu: "; cin >> plyr.weight; cout << "Oyuncu Yaşı: "; cin >> plyr.age; cout << "\nOyuncu Bilgileri" << endl; cout << "Adı: " << plyr.name << endl; cout <<"Kilosu: " << plyr.weight << endl; cout <<"Yaşı: " << plyr.age << endl; return 0; }
Çıktı:
Oyuncu Adı: Caner Oyuncu Kilosu: 65 Oyuncu Yaşı: 28 Oyuncu Bilgileri Adı: Caner Kilosu: 65 Yaşı: 28
- Union(Birlik)
Hem yapı hem de birleşim, farklı veri türlerinin toplanmasıdır. Farklı tipteki değişkenlerin sayısını tek bir ünitede gruplamak için kullanılırlar. Union bildirimi union anahtar kelimesi ve ardından union adı ile başlamalı ve union üye değişkenleri parantez içinde bildirilmelidir.Syntax (Sözdizimi):
union Player { char name[50]; float weight; int age; };
Örnek:
#include<iostream> using namespace std; union Player { char name[50]; float weight; int age; }; int main() { Player plyr; cout << "Oyuncu Adı: "; cin >> plyr.name; cout << "Oyuncu Kilosu: "; cin >> plyr.weight; cout << "Oyuncu Yaşı: "; cin >> plyr.age; cout << "Adı: " << plyr.name << endl; cout << "Kilosu: " << plyr.weight << endl; cout << "Yaşı: " << plyr.age << endl; return 0; }
Giriş:
Oyuncu Adı: Caner Oyuncu Kilosu: 45.7 Oyuncu Yaşı: 23
Çıktı:
Adı: Kilosu: 3.22299e-44 Yaşı: 23
Yukarıdaki örnekte, değişkene atanan son değer bellek konumunu işgal ettiğinden, enum name ve kilo değerlerinin bozulduğunu görebiliriz. Şimdi aynı örneğe bir kez daha bakalım, burada bir değişime sahip olmanın temel amacı olan bir değişkeni kullanacağız:
Örnek:
#include<iostream> using namespace std; union Player { char name[50]; float weight; int age; }; int main() { Player plyr; cout << "Oyuncu Adı Giriniz: "; cin >> plyr.name; cout << "Adı: " << plyr.name << endl; cout << "Oyuncu Kilosu Giriniz: "; cin >> plyr.weight; cout << "Kilosu: " << plyr.weight << endl; cout << "Oyuncu Yaşı Giriniz: "; cin >> plyr.age; cout << "Yaşı: " << plyr.age << endl; return 0; }
Çıktı:
Oyuncu Adı Giriniz: Caner Adı: Caner Oyuncu Kilosu Giriniz: 54.86 Kilosu: 54.86 Oyuncu Yaşı Giriniz: 37 Yaşı: 37
Union ve structure büyüklüğünü karşılaştırma örneği
Örnek:
#include<iostream> using namespace std; union Player1 { char name[50]; float weight; int age; }; struct Player2 { char name[50]; float weight; int age; }; int main() { cout << "Player1 boyutu : " << sizeof(Player1) << endl; cout << "Player2 boyutu : " << sizeof(Player2) << endl; return 0; }
Çıktı:
Player1 boyutu : 52 Player2 boyutu : 60
- Enum (Numaralandırma)
Enum(veya Enumeration) C’de kullanıcı tanımlı bir veri türüdür. Temel olarak integral sabitlere ad atamak için kullanılır, adlar bir programı okumayı ve bakımını kolaylaştırır.
Syntax (Sözdizimi):
enum Durum {Baslat = 1, Durdur = 0};
Örnek:
#include <iostream> using namespace std; enum hafta { Pazartesi, Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar }; int main() { hafta gun; gun = Persembe; cout << "Bugün: " << gun<<endl; return 0; }
Çıktı:
Bugün: 3
Not: Yukarıdaki kod bloğunda şayet enum değeri atanmadığı taktirde 0,1,2,3 şeklinde başlangıç değerlerine sahiptir. Şimdi değerleri değiştirilmiş enum değişkenlerini aşağıdaki örnekle inceleyelim.
Örnek:
#include <iostream> using namespace std; enum durum { Baslat=11, Durdur=10, Beklet = 22 }; int main() { durum drm; drm = Durdur; cout << "Durum: " << drm <<endl; return 0; }
Sonuç:
Durum: 10
- Typedef
C++, typedef anahtar sözcüğünü kullanarak açıkça yeni veri türü adları tanımlamanızı sağlar. Typedef kullanmak aslında yeni bir veri sınıfı oluşturmaz, bunun yerine mevcut bir tür için yeni bir ad tanımlar. Bu, yalnızca typedef deyimlerinin değiştirilmesi gerektiğinden bir programın taşınabilirliğini artırabilir.
Typedef kullanmak, standart veri türleri için açıklayıcı adlara izin vererek kodunuzun kendi kendini belgelemesine de yardımcı olabilir.
Syntax (Sözdizimi):
typedef float name;
Örnek:
#include <iostream> using namespace std; typedef int numbers; int main() { numbers x,y,total; cout<<"İki sayı girin: \n"; cin >> x >> y; total = x * y; cout << "\nÇarpma işleminin sonucu: " << total << endl; return 0; }
Giriş:
İki sayı girin: 12 4
Çıktı:
Çarpma işleminin sonucu: 48