C++

C++ Türleri

C++ Türleri
C++ varlığı bir değer, nesne, başvuru, işlev, numaralandırıcı, tür, sınıf üyesi, bit alanı, yapılandırılmış bağlama, ad alanı, şablon, şablon uzmanlığı veya parametre paketidir. Bir varlık bir veya daha fazla türden olabilir. C++ türlerinin iki kategorisi vardır: temel ve bileşik türler. Bir skaler aritmetik veya bir işaretçi nesne türüdür. Temel türler skalerdir, diğer varlık türleri ise bileşik türlerdir.

Bir bilgisayarın hafızası bir dizi hücredir. Her hücre bir bayt boyutundadır, normalde bir Batı Avrupa karakteri tarafından işgal edilen alandır. Bir nesnenin boyutu bayt cinsinden verilir. Bu makale, C++ türlerinin bir özetini verir. Bu makaleyi anlamak için zaten temel C++ bilgisine sahip olmalısınız.

Makale İçeriği

- Temel Türler
- Bileşik Türlerini Oluşturma Yolları
- diziler
- numaralandırma
- Sınıf
- Birlik
- Referanslar
- Fonksiyonlar
- Diğer Bileşik Türleri
- Sonuç

Temel Türler

Temel türler skaler türlerdir.

bool

Boole türü veya bool türü, 1 veya 0 için true veya false değerine sahiptir. Doğru veya yanlış bir bayt kaplar.

karakter, imzasız karakter ve imzalı karakter

Karakter tipik olarak bir Batı Avrupa karakteri içindir. Genellikle bir bayt kaplar. Ayrıca her biri sekiz bitlik bir tam sayı olan imzasız ve imzalı bir karakter vardır. İmzasız karakterler negatif değerler içermezken, imzalı karakterler negatif değerler içerir. Bir karakterin sahip olduğu değer türü derleyiciye bağlıdır ve yalnızca imzasız bir karakter olabilir. Bu üç tür karakter, dar karakter türleri olarak adlandırılır ve her biri bir bayt kaplar.

tamsayı

Beş işaretsiz standart tamsayı türü ve beş işaretli standart tamsayı türü vardır. Beş işaretsiz tamsayı türü şunlardır: "unsigned char", "unsigned short int", "unsigned int", "unsigned long int" ve "unsigned long long int". Karşılık gelen beş işaretli tamsayı türü şunlardır: "signed char", "short int", "int", "long int" ve "long long int".

"imzasız karakter", dar karakter türleriyle aynı türdür (yukarıya bakın). "signed char", dar karakter türlerinin diğer türüdür (yukarıya bakın).

g++ derleyicisi ile, “unsigned char” veya “signed char” bir bayt kaplar; “unsigned short int” veya “short int” iki bayt kaplar; “unsigned int” veya “int” dört bayt kaplar; “unsigned long int” veya “long int” 8 bayt kaplar; "unsigned long long int" veya "long long int" hala 8 bayt kaplıyor (şu andan itibaren).

char16_t, char32_t, wchar_t

Batı Avrupa karakterleriyle uğraşırken, birçok durumda char tipi yeterlidir. Ancak, Çince ve diğer Doğu dilleriyle uğraşırken, char16_t veya char32_t veya wchar_t gereklidir. g++ derleyicisiyle char16_t iki bayt kaplar; char32_t dört bayt kaplar ve wchar_t ayrıca dört bayt kaplar.

bool, char, char16_t, char32_t, wchar_t, işaretli ve işaretsiz tamsayı türleri, integral (tamsayı) türleri adı verilen başka bir küme oluşturur.

Makalenin bu noktasında iki toplu türden bahsedilmiştir: dar karakter türleri ve integral türleri.

Kayan Nokta Türleri

457.000 ve 457.230 sayılarının iki farklı ölçüm cihazıyla ölçülen aynı okuma olduğunu varsayalım. 457.230, 457.000'den daha kesindir çünkü değer daha ayrıntılıdır (daha küçük yerleri içerir: + 200 artı 30). Kayan noktalı sayı, kesirli (ondalık) kısmı olan bir sayıdır. Bilgisayardaki sayılar bir bit dizisi olmasına rağmen, bazı kayan nokta sayıları diğerlerinden daha kesindir.

Bazı ölçüm aletleri minimum adımlarla ölçüm yapar, örneğin 10 birim. Böyle bir enstrüman aşağıdaki okumalara sahip olacaktır: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240, vb. Bilgisayardaki sayılar bir bit dizisi olsa da, kayan nokta sayıları bazı minimum adımlarda (10 birimden çok daha küçük) değişir.

C++'ın üç kayan nokta türü vardır: kayan nokta, çift ve uzun çift. Herhangi bir derleyici için double, floattan veya en azından floattan daha yüksek hassasiyete sahip olmalıdır; long double, double veya en azından double değerinden daha yüksek hassasiyete sahip olmalıdır.

Üçüncü bir ortak isim var: aritmetik tip. Bu, integral ve kayan nokta türlerinin adıdır. Bunun, şimdiye kadar açıklandığı gibi, tüm skaler türlerin adı olduğuna dikkat edin.

g++ derleyicisiyle, bir kayan nokta için bayt sayısı dörttür; bir çift için bayt sayısı sekizdir; uzun bir çift için bayt sayısı on altıdır.

boşluk Türü

g++ derleyicisi ile void tipinin boyutu bir bayttır. Baytın resmi olarak biti yoktur, yani konumu boş içeriğe sahiptir.

Bileşik Türlerini Oluşturma Yolları

Bileşik türleri temel olmayan türlerdir. Bu, bileşik tiplerin skaler olmayan tipler olduğu anlamına gelir. Bu bölüm, bileşik türlerinin temellerini açıklar.

diziler

Aşağıdaki kod segmenti, bir dizi ints ve bir dizi karakter gösterir:

int arrInt[] = 1, 2, 3, 4, 5;
char arrCha[] = 'a', 'b', 'c', 'd', 'e';
cout << arrInt[2] <<" <Çıktı: 3 c.

numaralandırma

Numaralandırma, adlandırılmış sabitlere sahip bir türdür. Aşağıdaki kod segmentini göz önünde bulundurun:

numaralandırma a=3, b, c;
cout << b <<'\n';

çıktı: 4. Kod bölümünün ilk satırı bir numaralandırmadır ve a, b veya c bir numaralandırıcıdır.

Sınıf

Sınıf, aynı genelleştirilmiş birimin birçok nesnesinin oluşturulabildiği (başlatıldığı) genelleştirilmiş bir birimdir. Aşağıdaki program, bir sınıfı ve ondan örneklenen iki nesneyi gösterir. Böyle bir nesne skaler bir nesneden farklıdır.

#Dahil etmek
ad alanı std kullanarak;
sınıf TheCla

halka açık:
int sayı = 5;
int fn()

dönüş numarası;

;
int ana()

TheCla nesnesi;
TheCla nesnesi2;
cout << obj1.num << " << obj2.num <<'\n';
0 döndür;

Çıktı: 5 5. Sınıfın adı TheCla'dır ve iki nesnenin adları obj1 ve obj2'dir. Sınıfın açıklamasından (tanımından) hemen sonraki noktalı virgüle dikkat edin. İki nesnenin main() işlevinde nasıl başlatıldığına dikkat edin.

Not: num bir veri üyesidir ve fn bir üye işlevidir.

Birlik

yapı

Bir yapı bir dizi gibidir ancak indeks/değer çiftleri yerine isim/değer çiftlerine sahiptir. İsimler herhangi bir sırayla yazılabilir. Aşağıdaki program bir yapıyı ve kullanımını gösterir:

#Dahil etmek
ad alanı std kullanarak;
yapı TheCla

int sayı = 5;
yüzer flt = 2.3;
karakter ch = 'a';
obj1, obj2;
int ana()

cout << obj2.num <<", "<< obj2.flt <<", "<< obj2.ch <<'\n';
0 döndür;

Çıktı:

5, 2.3 A

Yapının adı TheCla. obj1 ve obj2, yapının iki farklı nesnesidir.

Birlik

Aşağıdaki program bir birliği ve kullanımını gösterir:

#Dahil etmek
ad alanı std kullanarak;
sendika TheCla

int sayı;
yüzer flt = 2.3;
karakter ch;
obj1, obj2;
int ana()

cout << obj2.flt <<'\n';
0 döndür;

çıktı: 2.3. Birlik bir yapıya benzer. Bir yapı ile bir birlik arasındaki temel fark, bir yapı için herhangi bir zamanda yalnızca bir üyenin bir değere (başlatılmış) sahip olabilmesidir. Yukarıdaki programda, üye, flt 2 değerine sahiptir.3. Diğer üyelerin her biri, num veya ch, yalnızca flt değeri terk edilirse bir sonraki değere sahip olabilir.

Referanslar

Referans, tanımlayıcının eş anlamlısıdır. Aşağıdaki kod bölümü, bir tanımlayıcıya nasıl başvuru alınacağını gösterir:

int kimlik = 5;
int& ref1 = id;
int& ref2 = id;
cout << id << " << ref1 << " << ref2 <<'\n';

Çıktı: 5 5 5. ref1 ve ref2, id ile eşanlamlıdır.

değer Referansı ve değer Referansı

Yukarıdaki referanslar değerli referanslardır. Aşağıdaki kod, değer referansını gösterir:

int&& referans = 5;
cout << ref <<'\n';

çıktı: 5. Bu referans, bellekte herhangi bir konum tanımlanmadan oluşturulur. Bunu başarmak için double & gereklidir, i.e., &&.

Işaretçi

Bir işaretçi gerçekten bir C++ varlığı değildir. Ancak, referanslarla başa çıkmak için daha iyi bir şema sağlar. Aşağıdaki kod, bir işaretçinin nasıl oluşturulabileceğini gösterir:

int ptdId = 5;
int ptdId = 5;
int *ptrId;
ptrId = &ptdId;
cout << *ptrId <<'\n';

çıktı: 5. ptdId ve ptdId arasındaki isim farkına dikkat edin. ptdId sivri uçlu nesnedir ve ptrId işaretçi nesnesidir. &ptdId, ptrId'e atanan sivri uçlu nesnenin adresini döndürür. Sivri uçlu nesnenin değerini döndürmek için *ptrId kullanın.

Fonksiyonlar

Temel İşlev ve Çağrısı

Aşağıdaki kod, temel bir işlev tanımını ve çağrısını gösterir:

#Dahil etmek
ad alanı std kullanarak;
int fn(int sayı)

cout<<"seen"<<'\n';
dönüş numarası;

int ana()

int ret = fn(5);
cout << ret <<'\n';
0 döndür;

çıktı

fonksiyon tanımı

5

İşlev çağrısı fn(5). Fonksiyonun adı fn.

Bir Fonksiyona Referans ve İşaretçi

&fn, adı fn olan işlevin belleğindeki adresi döndürür. Aşağıdaki ifade, bir işleve bir işaretçi bildirir:

int (*işlev)();

Burada func, işlevin işaretçisinin adıdır. İlk parantez çifti, bu işlev işaretçisini bir skaler nesne işaretçisinden ayırır. fn tarafından tanımlanan bir işlevin adresini aşağıdaki gibi tutmak için func yapılabilir:

işlev = &fn;

Aşağıdaki program, işlev referansını ve işaretçiyi eyleme geçirir:

#Dahil etmek
ad alanı std kullanarak;
int fn(int sayı)

/* bazı ifadeler */
dönüş numarası;

int ana()

int (*işlev)(int);
işlev = &fn;
int ret = işlev(5);
cout << ret <<'\n';
0 döndür;

çıktı: 5. Bildirimde hem fn hem de func'nin her birinin int parametresine sahip olduğunu unutmayın.

Diğer Bileşik Türleri

Yukarıdaki temel bileşik türleri kendi içlerinde bileşiktir. Ayrıca ayrıntılı bileşik türleri oluşturmak için kullanılırlar.

typedef

typedef ayrılmış sözcüğü, bir tür dizisini tek bir adla değiştirmek için kullanılır (sıra için). Aşağıdaki kod segmenti bunu göstermektedir:

typedef unsigned uzun int IduIL;

IduIL myInt = 555555555555555555;
cout << myInt <<'\n';

Çıktı 555555555555555555. Kodda, IduIL, “unsigned long int” anlamına gelen bir tür haline geldi.

Yapılandırılmış Bağlama

Yapılandırılmış bağlama, alt nesnelere ad verilmesini mümkün kılan bir özelliktir. Aşağıdaki kod dizi için bunu göstermektedir:

int dizi[3] = 1, 2, 3;
otomatik [x, y, z](dizi);
cout << x <<"<< y <<"<< z <<'\n';

çıktı 1 2 3. Böylece, 1, 2, 3 değerlerine x, y, z isimleri verilmiştir. Ayrılmış kelimenin kullanımına ve konumuna dikkat edin, auto. Ayrıca köşeli parantez kullanımına da dikkat edin.

Bit Alanı

Bellek bir hücre dizisidir. Her hücre bir bayt alır. Ayrıca, her bayt sekiz bitten oluşur. Sekiz bit olması gerekmeyen bir grup bit ayarlanabilir ve değiştirilebilir. Böyle bir gruba bit alanı denir. Bu gruplar yan yana. Gruplar bir tür oluşturmayacaksa, örneğin kısa bir int için 16 bit, dolgu bitleri eklenir. Aşağıdaki kod bunu yapı ile göstermektedir:

yapı Tarihi

imzasız kısa wkDay : 3; ///3 bit
imzasız kısa pazartesi : 6; //6 bit
imzasız kısa pzt : 5; ///5 bit
imzasız kısa yıl : 8; //8 bit 2 basamaklı yıl için
dte;
dte.haftaGünü = 1; dte.pazartesi = 2; dte.pzt = 2; dte.yıl = 21;
cout << dte.mon <<'/'<< dte.monDay <<'/'<< dte.yr <<'\n';

Çıktı: 2/2/21. wkDay, MonDay ve mon için toplam bit sayısı 3 + 6 + 5 = 14'tür. Böylece, 2 baytlık (16 bit) kısa tamsayı için 16 bit oluşturmak üzere iki dolgu biti eklenecektir. Sonraki 8 bit, bir sonraki kısa int'ye başlar ve daha sonra 8 dolgu biti ile doldurulur.

Not: Bit alanları kullanmaktan kaçının; sadece araştırma için kullanın.

ad alanı

Ad alanı, diğer ad kümelerinin aynı adlarıyla çakışmaması gereken bir ad kümesidir. Aşağıdaki program, main() işlevinin ad alanında uygulanan iki farklı ad alanından aynı adların kullanımını gösterir:

#Dahil etmek
ad alanı std kullanarak;
ad alanı NS1

int myInt = 8;
yüzer flt;

ad alanı NS2

int myInt = 9;
yüzer flt;

int ana()

cout << NS1::myInt << '\n';
cout << NS2::myInt << '\n';
NS1::flt = 2.5;
NS2::flt = 4.8;
cout << NS1::flt << '\n';
cout << NS2::flt << '\n';
0 döndür;

Çıktı:

9

8

2.5

4.8

Kodda iki çakışan aynı int adı ve iki çakışan aynı kayan nokta adı var.

Şablon ve Şablon Uzmanlığı

Şablon şeması, farklı olası skaler türleri için bir yer tutucunun kullanılmasına izin verir. Uzmanlık, belirli bir skaler türü seçmektir. Aşağıdaki kod, bir işlev için bunu gösterir:

#Dahil etmek
ad alanı std kullanarak;
şablon geçersiz işlevi (T cha, U no)

cout << "I need bread for " << cha << no << '.' << '\n';

int ana()

işlev('$', 3);
0 döndür;

Çıktı:

“3 dolara ekmeğe ihtiyacım var.”

Şablon Parametre Paketi

Derleyiciler hala bu özelliği tam olarak uygulamaktadır - daha sonra bakın.

Sonuç

C++ türleri iki kategoride bulunur: temel türler ve bileşik türler. Temel türler skaler türlerdir. Temel bileşik türleri diziler, numaralandırmalar, sınıflar, birlikler, referanslar, işaretçiler ve işlevlerdir. Bu temel bileşik türleri, typedef, yapılandırılmış bağlamalar, bit alanları, ad alanı ve şablon özellikleri olan ayrıntılı bileşik türleri oluşturmak için kullanılır.

Chrys

Linux için En İyi 5 Ergonomik Bilgisayar Faresi Ürünleri
Uzun süreli bilgisayar kullanımı bileğinizde veya parmaklarınızda ağrıya neden olur mu?? Sert eklemlerden muzdarip misiniz ve sürekli ellerinizi sıkma...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...