Liphoso tse Tloaelehileng Lenaneong la C++ le Mokhoa oa ho li Lokisa
Lenaneo la C++ ke e 'ngoe ea lipuo tse matla ka ho fetisisa tsa mananeo a lenaneo le tenyetsehang. Ka bokhoni ba eona ba ho tšehetsa mananeo a ts'ebetso, a shebaneng le lintho, le a akaretsang, C++ e sebelisoa haholo lits'ebetsong tse fapaneng, ho tloha lits'ebetsong tse sebetsang ho ea lits'ebetsong tsa lipapali tse sebetsang hantle. Leha ho le joalo, joalo ka puo efe kapa efe ea mananeo, C++ e boetse e na le liphoso tse 'maloa tse tloaelehileng tseo bahlahisi, ba bacha le ba nang le boiphihlelo, ba atisang ho kopana le tsona. Sengoloa sena se tla tšohla liphoso tse ling tse tloaelehileng lenaneong la C++ le ho fana ka tataiso ea hore na li ka lokisoa joang.
1. Ho Sebelisa Litlhaku Tse sa Qalisoang
Phoso:
Sesupa-tsela se sa qaloang se ka supa sebaka sa memori se sa tsejoeng, sa baka boits'oaro bo sa lebelloang kapa ho senyeha ha lenaneo. Mohlala oa phoso ena ke o latelang:
“`cpp
int ptr; // ptr ha e so qalwe
ptr = 10; // Phoso: pointer ha ea qalisoa
``
Mokhoa oa ho Lokisa:
Qala pointer pele o e sebedisa. O ka e qala ka `nullptr` kapa ka aterese e nepahetseng ya memori.
“`cpp
int ptr = nullptr; // Qala ka nullptr
boleng ba int = 10;
ptr = &boleng;
ptr = 20; // Hona joale ho bolokehile
``
2. Liphoso Tsamaisong ea Memori (Ho Lutla ha Memori)
Phoso:
Ho dutla ha memori ho etsahala ha memori e abetsweng e sa lokollwe hape. Sena se ka etsa hore sesebelisoa se sebelise memori e ngata ha nako e ntse e ea, qetellong se lebise khaellong ea memori.
“`cpp
int ptr = int e ncha[10];
// Lebala ho hlakola memori e abetsoeng
``
Mokhoa oa ho Lokisa:
Kamehla etsa bonnete ba hore o lokolla memori e abetsweng o sebedisa `delete` kapa `delete[]` ho latela hore na ho sebedisitswe eng ho e aba.
“`cpp
int ptr = int e ncha[10];
// Tšebeliso ea memori…
hlakola[] ptr; // Memori e abetsoeng mahala
``
Sebelisa laeborari ea litšupiso tse bohlale (joalo ka `std::unique_ptr` kapa `std::shared_ptr`) ho nolofatsa taolo ea memori.
“`cpp
kenyeletsa
std::unique_ptr ptr(int e ncha[10]);
// Memori e tla lokolloa ka bohona ha ptr e tsoa ho scope
``
3. Liphoso tsa ho Sebelisa Litšupiso
Phoso:
Ho khutlisetsa referense kapa pointer ho phetoho ea lehae e tsoileng moeling ho ka baka boitšoaro bo sa lebelloang.
“`cpp
int&getReference() {
boleng ba int = 10;
boleng ba ho kgutlisa; // Phoso: ho kgutlisa referense ho phetoho ya lehae
}
``
Mokhoa oa ho Lokisa:
Qoba ho kgutlisa ditshupiso ho diphetoho tsa lehae. Ho ena le hoo, sebedisa diphetoho tse sa fetoheng, kapa ho molemo le ho feta, kgutlisa boleng, kapa nahana ka ho sebedisa dintho.
“`cpp
int getValue() {
boleng ba int = 10;
boleng ba ho khutlisa; // E bolokehileng haholoanyane
}
``
4. Hlokomoloha Melaetsa le Litemoso tsa Phoso ea Compiler
Phoso:
Hangata bahlophisi ba mananeo ba hlokomoloha melaetsa ea liphoso le litemoso tse fanoeng ke moqapi, leha melaetsa ena e fana ka tlhahisoleseling ea bohlokoa mabapi le liphoso tse ka bang teng.
Mokhoa oa ho Lokisa:
Kamehla hlahloba le ho utloisisa melaetsa ea liphoso le litemoso tse hlahisoang ke moqapi. Kenya litemoso tsa boemo bo holimo ho netefatsa khoutu e hloekileng.
Mohlala ho GCC, sebelisa folakha ea `-Wall` ho hlahisa litemoso tse ling.
“`bash
g++ -Wall -o lenaneo la sehlooho.cpp
``
5. Phoso ho Tsamaiso e Feteletseng ea Mosebetsi
Phoso:
Ho jara ka mokhoa o fosahetseng ha opareitara ho ka baka liphoso tse sa lebelloang tsa boitšoaro kapa tsa nako ea ho sebetsa.
“`cpp
Sehlopha sa ka sa sehlopha {
phatlalatsa:
lintlha tsa int;
Motsamaisi oa MyClass+ (const MyClass& tse ling) {
kgutlisa data + data e nngwe; // Phoso: e lokela ho kgutlisa MyClass
}
};
``
Mokhoa oa ho Lokisa:
Etsa bonnete ba hore opereishene e imetsoeng haholo e khutlisa mofuta o loketseng mme e boloka lintho tse sa fetoheng tsa sehlopha.
“`cpp
Sehlopha sa ka sa sehlopha {
phatlalatsa:
lintlha tsa int;
Motsamaisi oa MyClass+ (const MyClass& tse ling) {
Sephetho sa MyClass;
sephetho.data = data + data e 'ngoe;
sephetho sa ho khutlisa; // E khutlisa ntho ho tsoa ho MyClass
}
};
``
6. Tšebeliso e mpe ea Macros
Phoso:
Ka linako tse ling li-macro li sebelisoa ka mokhoa o feteletseng kapa o fosahetseng, e leng se ka lebisang liphosong tse thata ho li lemoha nakong ea ts'ebetso.
“`cpp
hlalosa SQUARE(x) xx
sephetho sa int = SQUARE(5 + 1); // Phoso: sephetho ke 5 + 1 5 + 1
``
Mokhoa oa ho Lokisa:
Nka sebaka sa macro ka lipolelo tse sa fetoheng kapa litempele bakeng sa ts'ireletso le taolo e betere ea mofuta.
“`cpp
thempleite
Sekwere sa T(T x) {
kgutlisa xx;
}
sephetho sa int = sekwere(5 + 1); // Ho bolokehile ho e sebedisa
``
7. Tšebeliso e mpe ea Mesebetsi ea setaele sa C
Phoso:
Ho sebedisa mesebetsi ya setaele sa C jwalo ka `strcpy` kapa `sprintf` tse kotsing ya ho tlola ha buffer.
“`cpp
char src[] = "Lumela, Lefatše!";
char dest[5];
strcpy(dest, src); // Phoso: ho phalla ha buffer
``
Mokhoa oa ho Lokisa:
Sebelisa mesebetsi e sireletsehileng ea C++ joalo ka `std::string` kapa `std::vector`.
“`cpp
kenyeletsa
std::string src = “Lumela, Lefatše!”;
std::khoele dest = src;
``
8. Ho Hlokomoloha ho Fumana Phoso
Phoso:
Hlokomoloha tlhahlobo ea liphoso ts'ebetsong ea I/O kapa mesebetsi e ka hlolehang.
“`cpp
std::faele ea ho phallela ("data.txt");
// Phoso: ha ea ka ea hlahloba hore na faele e butsoe ka katleho
``
Mokhoa oa ho Lokisa:
Kamehla hlahloba hore na ts'ebetso e atlehile 'me u sebetsane le liphoso ka nepo.
“`cpp
std::faele ea ho phallela ("data.txt");
haeba (! faele) {
std::cerr << “E hlolehile ho bula faele” << std::endl;
khutla 1;
}
``
9. Ho kenya tshebetsong Loop e sa Sebetseng Hantle
Phoso:
Ho sebelisa li-loop tse sa lokelang ho ka baka phokotseho ea ts'ebetso ea lenaneo.
“`cpp
bakeng sa (int i = 0; i <vec.size(); i++) {
// Tsamaiso ka vec[i]
// Phoso: boholo() bo bitsoa phetohong e 'ngoe le e 'ngoe
}
``
Mokhoa oa ho Lokisa:
Ntlafatsa di-loop ka ho fokotsa mehala e pheta-phetoang ya tshebetso.
“`cpp
bakeng sa (std::size_t i = 0, n = vec.size(); i < n; i++) {
// Tsamaiso ka vec[i]
}
``
Hape sebelisa li-algorithms tsa STL tse kang `std::for_each` bakeng sa ntlafatso e eketsehileng.
“`cpp
kenyeletsa
std::for_each(vec.begin(), vec.end(), [](int &value) {
// Ts'ebetso e nang le boleng
});
``
10. Phoso ho Tsamaiseng Khoele
Phoso:
Ho se tsamaisane hantle ha dikhoele ho ka lebisa maemong a peiso kapa ho se dumellane.
“`cpp
kenyeletsa void run() {
// Phoso: Boemo ba peiso bo ka hlaha
}
std::khoele t1(matha);
std::khoele t2(matha);
``
Mokhoa oa ho Lokisa:
Sebelisa li-primitives tsa ho hokahanya tse kang li-mutexe ho thibela maemo a peiso le ho se lumellane.
“`cpp
kenyeletsa kenyeletsa
std::mutex mtx;
lefela ho matha () {
std::senotlolo sa mosireletsi wa senotlolo(mtx);
// Ts'ebetso e sireletsehileng maemong a morabe
}
std::khoele t1(matha);
std::khoele t2(matha);
t1.join();
t2.join();
``
Qetello
C++ ke puo e matla le e tenyetsehang ea mananeo, empa e boetse e na le liphoso tse tloaelehileng, haholo-holo tse amanang le memori le tsamaiso ea pointer. Ka ho utloisisa liphoso tsena le ho tseba ho li lokisa, u ka nts'etsapele lits'ebetso tse tšepahalang le tse sebetsang hantle. Hopola ho ela hloko melaetsa ea compiler kamehla, sebelisa lisebelisoa tsa sejoale-joale tse u thusang ho ngola khoutu e sireletsehileng , 'me u tsoele pele ho ntlafatsa tsebo ea hau ea ho utloisisa le ho sebelisa mekhoa e metle ea mananeo a C++.