Mearachdan Cumanta ann am Prògramadh C ++ agus Mar a chuireas tu ceart iad
’S e prògramadh C++ aon de na cànanan prògramaidh as cumhachdaiche agus as sùbailte. Leis a’ chomas aige taic a thoirt do phrògramadh modhan-obrach, stèidhichte air nithean, agus coitcheann, tha C++ air a chleachdadh gu farsaing ann an raon farsaing de thagraidhean, bho shiostaman obrachaidh gu tagraidhean geama àrd-choileanaidh. Ach, mar chànan prògramaidh sam bith, tha grunn mhearachdan cumanta aig C++ cuideachd a bhios luchd-leasachaidh, an dà chuid ùr agus eòlach, a’ tighinn tarsainn orra gu tric. Bruidhnidh an t-artaigil seo air cuid de mhearachdan cumanta ann am prògramadh C++ agus bheir e stiùireadh air mar a chuireas tu ceart iad.
1. A’ cleachdadh chomharran neo-thòisichte
Mearachd:
Faodaidh comharraiche neo-thòisichte comharrachadh gu àite cuimhne neo-aithnichte, ag adhbhrachadh giùlan ris nach robh dùil no tubaist prògraim. Seo eisimpleir den mhearachd seo:
“`cpp
int ptr; // chan eil ptr air a thòiseachadh
ptr = 10; // Mearachd: cha deach an comharraiche a thòiseachadh
“`
Mar a chuireas tu ceart e:
Tòisich am puingear mus cleachd thu e. Faodaidh tu a thòiseachadh le `nullptr` no le seòladh cuimhne dligheach.
“`cpp
int ptr = nullptr; // Tòisich le nullptr
luach iomlan = 10;
ptr = &luach;
ptr = 20; // A-nis sàbhailte
“`
2. Mearachdan ann an Riaghladh Cuimhne (Aodion Cuimhne)
Mearachd:
Bidh aodion cuimhne a’ tachairt nuair nach tèid cuimhne a chaidh a riarachadh ath-sgaoileadh. Faodaidh seo adhbhrachadh gum bi aplacaid a’ cleachdadh barrachd is barrachd cuimhne thar ùine, agus mu dheireadh a’ leantainn gu gainnead cuimhne.
“`cpp
int ptr = int ùr[10];
// Dìochuimhnich cuimhne a chaidh a riarachadh a dhubhadh às
“`
Mar a chuireas tu ceart e:
Dèan cinnteach an-còmhnaidh gun saor thu cuimhne a chaidh a riarachadh le bhith a’ cleachdadh `delete` no `delete[]` a rèir dè a chaidh a chleachdadh gus a riarachadh.
“`cpp
int ptr = int ùr[10];
// Cleachdadh cuimhne…
cuir às[] ptr; // Saor cuimhne air a riarachadh
“`
Cleachd leabharlann chomharran snasail (leithid `std::unique_ptr` no `std::shared_ptr`) gus riaghladh cuimhne a dhèanamh nas fhasa.
“`cpp
gabhail a-steach
std::unique_ptr ptr(int ùr[10]);
// Thèid cuimhne a leigeil ma sgaoil gu fèin-ghluasadach nuair a dh’fhàgas ptr an raon
“`
3. Mearachdan ann a bhith a’ cleachdadh iomraidhean
Mearachd:
Faodaidh tilleadh iomradh no comharraiche gu caochladair ionadail a tha air a dhol a-mach à raon giùlan ris nach robh dùil adhbhrachadh.
“`cpp
int& faighIomradh() {
luach iomlan = 10;
luach tilleadh; // Mearachd: a’ tilleadh iomradh air caochladair ionadail
}
“`
Mar a chuireas tu ceart e:
Seachain iomraidhean a thilleadh gu caochladairean ionadail. An àite sin, cleachd caochladairean statach, no nas fheàrr fhathast, till luachan, no smaoinich air nithean a chleachdadh.
“`cpp
int faighLuach() {
luach iomlan = 10;
luach tilleadh; // Nas sàbhailte
}
“`
4. Na gabh dragh mu theachdaireachdan mearachd is rabhaidhean an t-siolandair
Mearachd:
Bidh prògramadairean gu tric a’ seachnadh teachdaireachdan mearachd agus rabhaidhean a chuireas an co-chruinneadair a-mach, eadhon ged a bheir na teachdaireachdan sin fiosrachadh cudromach mu mhearachdan a dh’ fhaodadh a bhith ann.
Mar a chuireas tu ceart e:
Thoir sùil an-còmhnaidh air na teachdaireachdan mearachd agus na rabhaidhean a ghineas an co-chruinneadair agus tuig iad. Cuir rabhaidhean àrd-ìre an comas gus dèanamh cinnteach à còd nas glaine.
Mar eisimpleir ann an GCC, cleachd am bratach `-Wall` gus barrachd rabhaidhean a ghineadh.
“`bash
g++ -Balla -o prògram prìomh.cpp
“`
5. Mearachd ann an Cus Luchdadh Obraiche
Mearachd:
Faodaidh cus luchdachadh ceàrr air obraicheadairean giùlan ris nach robh dùil no mearachdan ruith-ùine adhbhrachadh.
“`cpp
clas Mo Chlas {
poblach:
dàta iomlan;
Obraicheadair MoChlas+ (const MoChlas& eile) {
till dàta + eile.dàta; // Mearachd: bu chòir dha MyClass a thilleadh
}
};
“`
Mar a chuireas tu ceart e:
Dèan cinnteach gu bheil an gnìomhaiche cus luchdaichte a’ tilleadh an seòrsa iomchaidh agus a’ gleidheadh neo-atharraichean a’ chlas.
“`cpp
clas Mo Chlas {
poblach:
dàta iomlan;
Obraicheadair MoChlas+ (const MoChlas& eile) {
Toradh MyClass;
dàta.toraidh = dàta + dàta.eile;
till toradh; // A’ tilleadh nì bhon Chlas agam
}
};
“`
6. Droch-chleachdadh Macros
Mearachd:
Uaireannan bidh macros air an cleachdadh cus no gu ceàrr, agus faodaidh seo mearachdan adhbhrachadh a tha duilich an lorg aig àm ruith.
“`cpp
mìnich CEÀRNAG(x) xx
int toradh = CEÀRNAG(5 + 1); // Mearachd: is e an toradh 5 + 1 5 + 1
“`
Mar a chuireas tu ceart e:
Cuir abairtean no teamplaidean cunbhalach an àite macros airson tèarainteachd agus smachd nas fheàrr air seòrsa.
“`cpp
teamplaid
T ceàrnagach(T x) {
tilleadh xx;
}
int toradh = ceàrnag(5 + 1); // Sàbhailte a chleachdadh
“`
7. Droch-chleachdadh Gnìomhan Stoidhle C
Mearachd:
A’ cleachdadh gnìomhan stoidhle C mar `strcpy` no `sprintf` a tha so-leònte ri cus-shruthadh bufair.
“`cpp
char src[] = "Halò, a Shaoghail!";
ceann-uidhe char[5];
strcpy(dest, src); // Mearachd: cus-shruthadh bufair
“`
Mar a chuireas tu ceart e:
Cleachd gnìomhan C++ nas sàbhailte leithid `std::string` no `std::vector`.
“`cpp
gabhail a-steach
std::string src = “Halò, a Shaoghail!”;
std::string ceann-uidhe = src;
“`
8. A’ seachnadh lorg mhearachdan
Mearachd:
Na dèan sgrùdadh mhearachdan air obrachaidhean no gnìomhan I/O a dh’ fhaodadh fàiligeadh.
“`cpp
faidhle std::ifstream(“dàta.txt”);
// Mearachd: cha deach sgrùdadh a dhèanamh an deach am faidhle fhosgladh gu soirbheachail
“`
Mar a chuireas tu ceart e:
Thoir sùil an-còmhnaidh a bheil an obair air a bhith soirbheachail agus dèilig ri mearachdan mar bu chòir.
“`cpp
faidhle std::ifstream(“dàta.txt”);
ma tha (!faidhle) {
std::cerr << “Dh’fhàillig fosgladh faidhle” << std::endl;
tilleadh 1;
}
“`
9. Buileachadh Lùb Neo-iomchaidh
Mearachd:
Faodaidh cleachdadh lùban neo-iomchaidh lùghdachadh a dhèanamh air coileanadh a’ phrògraim.
“`cpp
airson (int i = 0; i < meud.meud(); i++) {
// Pròiseas le vec[i]
// Mearachd: size() air a ghairm air gach ath-aithris
}
“`
Mar a chuireas tu ceart e:
Leasaich lùban le bhith a’ lughdachadh ghairmean gnìomh a-rithist is a-rithist.
“`cpp
airson (std::size_t i = 0, n = vec.size(); i < n; i++) {
// Pròiseas le vec[i]
}
“`
Gabh brath cuideachd air algairim STL mar `std::for_each` airson tuilleadh leasachaidh.
“`cpp
gabhail a-steach
std::airson_gach(vec.begin(), vec.end(), [](int &luach) {
// Pròiseas le luach
});
“`
10. Mearachd ann an làimhseachadh nan snàthan
Mearachd:
Faodaidh droch làimhseachadh snàithleanan leantainn gu suidheachaidhean rèis no bacadh.
“`cpp
cuir a-steach ruith falamh () {
// Mearachd: Dh’fhaodadh suidheachadh rèis tachairt
}
std::snàthainn t1(ruith);
std::snàthainn t2(ruith);
“`
Mar a chuireas tu ceart e:
Cleachd prìomhaidean sioncronachaidh leithid mutexes gus casg a chur air suidheachaidhean rèis agus glasan-stad.
“`cpp
cuir a-steach cuir a-steach
std::mutex mtx;
ruith falamh() {
std::glas_dìon glas(mtx);
// Pròiseas a tha sàbhailte bho chumhaichean rèis
}
std::snàthainn t1(ruith);
std::snàthainn t2(ruith);
t1.join();
t2.join();
“`
Co-dhùnadh
’S e cànan prògramaidh cumhachdach is sùbailte a th’ ann an C++, ach tha e cuideachd buailteach do mhearachdan cumanta, gu sònraichte a thaobh riaghladh cuimhne is puingearan. Le bhith a’ tuigsinn nan mearachdan sin agus fios agad mar a chuireas tu ceart iad, faodaidh tu tagraidhean nas earbsaiche agus nas èifeachdaiche a leasachadh . Cuimhnich gun toir thu aire an-còmhnaidh do theachdaireachdan an co-chruinneachaidh, gun cleachd thu innealan ùr-nodha a chuidicheas tu gus còd sàbhailte a sgrìobhadh , agus gun leasaich thu do sgilean ann a bhith a’ tuigsinn agus a’ cur an sàs deagh chleachdaidhean prògramaidh C++.