Xeletiyên Hevpar di Bernamesaziya C++ de û Çawaniya Çareserkirina Wan
Bernamesaziya C++ yek ji zimanên bernamesaziyê yên herî bihêz û guhêrbar e. Bi şiyana xwe ya piştgiriya bernamesaziya prosedurî, objekt-rêberkirî û gelemperî, C++ bi berfirehî di cûrbecûr sepanan de tê bikar anîn, ji pergalên xebitandinê bigire heya sepanên lîstikên performansa bilind. Lêbelê, mîna her zimanê bernamesaziyê, C++ jî hejmarek xeletiyên hevpar hene ku pêşdebir, hem nû û hem jî xwedî ezmûn, pir caran rastî wan tên. Ev gotar dê li ser hin xeletiyên hevpar ên di bernamesaziya C++ de nîqaş bike û rêbernameyê li ser ka meriv çawa wan rast dike bide.
1. Bikaranîna Nîşankerên Nedestpêkirî
Şaşî:
Nîşanderek nedestpêkirî dikare ber bi cihekî bîranînê yê nenas ve nîşan bide, û bibe sedema tevgerên neçaverêkirî an têkçûna bernameyê. Nimûneyek ji vê çewtiyê wiha ye:
“`cpp
int ptr; // ptr nehatiye destpêkirin
ptr = 10; // Çewtî: nîşanker nehatiye destpêkirin
""
Çawaniya Çareserkirinê:
Berî bikaranînê nîşankerê destpê bike. Hûn dikarin wê bi `nullptr` an jî bi navnîşana bîranînê ya derbasdar destpê bike.
“`cpp
int ptr = nullptr; // Bi nullptr dest pê bike
nirxa int = 10;
ptr = &nirx;
ptr = 20; // Niha ewle ye
""
2. Xeletiyên di Rêvebiriya Bîrê de (Rêjeya Bîrê)
Şaşî:
Dema ku bîra veqetandî ji nû ve neyê berdan, rijandina bîrê çêdibe. Ev dikare bibe sedema ku serîlêdan bi demê re bêtir û bêtir bîrê bikar bîne, û di dawiyê de bibe sedema kêmbûna bîrê.
“`cpp
int ptr = int[10] ya nû;
// Ji bîr bike ku bîra veqetandî jê bikî
""
Çawaniya Çareserkirinê:
Li gorî tiştê ku ji bo veqetandina wê hatiye bikar anîn, her gav piştrast bikin ku hûn bîra veqetandî bi karanîna `delete` an `delete[]` azad dikin.
“`cpp
int ptr = int[10] ya nû;
// Bikaranîna bîrê…
jê bibe[] ptr; // Bîra veqetandî ya vala
""
Ji bo hêsantirkirina rêveberiya bîranînê pirtûkxaneyek nîşankerên jîr (wek `std::unique_ptr` an `std::shared_ptr`) bikar bîne.
“`cpp
linavxistin
std::unique_ptr ptr(nû navber[10]);
// Dema ku ptr ji çarçoveyê derkeve, bîr dê bixweber were berdan
""
3. Xeletiyên di Bikaranîna Referansan de
Şaşî:
Vegerandina referansek an nîşanderek bo guhêrbarek herêmî ku ji çarçoveya wê derketiye dikare bibe sedema tevgerên neçaverêkirî.
“`cpp
int& getReference() {
nirxa int = 10;
nirxa vegerandinê; // Çewtî: referansek vedigerîne guhêrbarek herêmî
}
""
Çawaniya Çareserkirinê:
Ji vegerandina referansên bo guhêrbarên herêmî dûr bisekinin. Li şûna wê, guhêrbarên statîk bikar bînin, an jî çêtir e, nirxan vegerînin, an jî bikaranîna objeyan bifikirin.
“`cpp
int getValue() {
nirxa int = 10;
nirxa vegerê; // Ewletir
}
""
4. Peyam û Hişyariyên Çewtiyên Kompîlerê Paşguh Bike
Şaşî:
Bernamesaz pir caran peyamên çewtiyê û hişyariyên ku ji hêla berhevkar ve têne dayîn paşguh dikin, her çend ev peyam agahdariyên girîng di derbarê çewtiyên potansiyel de peyda dikin.
Çawaniya Çareserkirinê:
Peyamên çewtiyê û hişyariyên ku ji hêla berhevkar ve têne çêkirin her gav kontrol bikin û fêm bikin. Ji bo ku kodek paqijtir were misoger kirin, hişyariyên asta bilind çalak bikin.
Mînakî li GCC, ji bo çêkirina bêtir hişyariyan ala `-Wall` bikar bînin.
“`bash
g++ -Wall -o bernameya main.cpp
""
5. Çewtiya Zêdebarkirina Operator
Şaşî:
Zêdebarkirina operatorê ya şaş dikare bibe sedema tevgerên nediyar an xeletiyên dema xebitandinê.
“`cpp
çîna MyClass {
alenî:
daneyên int;
Operatorê MyClass+ (const MyClass& yên din) {
daneyan vegerîne + other.data; // Çewtî: divê MyClass vegerîne
}
};
""
Çawaniya Çareserkirinê:
Piştrast bike ku operatorê zêdebarkirî cureya guncaw vedigerîne û neguherbarên çînê diparêze.
“`cpp
çîna MyClass {
alenî:
daneyên int;
Operatorê MyClass+ (const MyClass& yên din) {
Encama MyClass;
encam.dane = dane + yên din.dane;
encam vegerîne; // Tiştek ji MyClass vedigerîne
}
};
""
6. Bikaranîna xelet a makroyan
Şaşî:
Carinan makro zêde an jî bi xeletî tên bikaranîn, ku ev jî dikare bibe sedema çewtiyan ku di dema xebitandinê de tespîtkirina wan dijwar e.
“`cpp
Çargoşe(x) xx pênase bike
int result = SQUARE(5 + 1); // Çewtî: encam 5 + 1 e 5 + 1
""
Çawaniya Çareserkirinê:
Ji bo ewlehî û kontrola tîpan a çêtir, makroyan bi îfadeyên sabît an şablonan biguherînin.
“`cpp
şablonê
Çargoşeya T (T x) {
vegere xx;
}
int result = square(5 + 1); // Bikaranîna wê ewle ye
""
7. Bikaranîna xelet a fonksiyonên şêwaza C
Şaşî:
Bi kar anîna fonksiyonên bi şêwaza C yên wekî `strcpy` an `sprintf` ku ji ber overflowbûna bufferê xeternak in.
“`cpp
char src[] = "Silav, Cîhan!";
char dest[5];
strcpy(dest, src); // Çewtî: zêdebûna tamponê
""
Çawaniya Çareserkirinê:
Fonksiyonên C++ yên ewletir ên wekî `std::string` an `std::vector` bikar bînin.
“`cpp
linavxistin
std::string src = “Silav, Cîhan!”;
std::string dest = src;
""
8. Paşguhkirina Tesbîtkirina Çewtiyê
Şaşî:
Kontrolkirina çewtiyên li ser operasyonên I/O an fonksiyonên ku dikarin têk biçin, paşguh bike.
“`cpp
pelê std::ifstream("dane.txt");
// Çewtî: nehat kontrolkirin ka pel bi serkeftî hatiye vekirin an na
""
Çawaniya Çareserkirinê:
Her tim kontrol bike ka operasyon serketî bû an na û xeletiyan bi guncaw çareser bike.
“`cpp
pelê std::ifstream("dane.txt");
eger (!pel) {
std::cerr << “Vekirina pelê neserkeftî” << std::endl;
vegerin 1;
}
""
9. Bicîhanîna Loopa Nebaştirîn
Şaşî:
Bikaranîna lûpên nebaş dikare bibe sedema kêmbûna performansa bernameyê.
“`cpp
ji bo (int i = 0; i < vec.size(); i++) {
// Pêvajo bi vec[i]
// Çewtî: size() di her dubarekirinê de tê gazîkirin
}
""
Çawaniya Çareserkirinê:
Bi kêmkirina bangên fonksiyonên dubarekirî lûpan çêtir bikin.
“`cpp
ji bo (std::size_t i = 0, n = vec.size(); i < n; i++) {
// Pêvajo bi vec[i]
}
""
Her wiha ji bo çêtirkirina bêtir sûd ji algorîtmayên STL yên wekî `std::for_each` werbigire.
“`cpp
linavxistin
std::for_each(vec.begin(), vec.end(), [](int &nirx) {
// Pêvajoyek bi nirx
});
""
10. Çewtî di Birêvebirina Mijaran de
Şaşî:
Nekarîna bikaranîna xelet a têlan dikare bibe sedema şert û mercên nijadî an jî astengiyan.
“`cpp
valahiyê bixebitîne() {
// Çewtî: Dibe ku rewşa nijadperestiyê çêbibe
}
std::tema t1(bimeşe);
std::tema t2(bimeşe);
""
Çawaniya Çareserkirinê:
Ji bo rêgirtina li şert û mercên pêşbaziyê û astengiyan, prîmîtîvên senkronîzasyonê yên wekî mutexes bikar bînin.
“`cpp
tê de
std::mutex mtx;
valahiyek xebitandinê() {
std::lock_guard kilît(mtx);
// Pêvajoyek ku ji şert û mercên nijadperestiyê ewle ye
}
std::tema t1(bimeşe);
std::tema t2(bimeşe);
t1.join();
t2.join();
""
Xelasî
C++ zimanekî bernamesaziyê yê bihêz û nerm e, lê di heman demê de ew meyldarê xeletiyên hevpar e, nemaze yên têkildarî rêveberiya bîr û nîşankeran. Bi têgihîştina van xeletiyan û zanîna ka meriv çawa wan rast dike, hûn dikarin sepanên pêbawertir û bibandortir pêşve bibin . Ji bîr mekin ku her gav bala xwe bidin peyamên kompîlatorê, amûrên nûjen bikar bînin ku ji we re dibin alîkar ku hûn koda ewle binivîsin , û bi berdewamî jêhatîyên xwe di têgihîştin û sepandina pratîkên çêtirîn ên bernamesaziyê yên C++ de baştir bikin.