C++
C++ (/ˌsiːˌplʌsˈplʌs/ යනු ඩෙන්මාර්ක ජාතික පරිගණක විද්යාඥ බ්යාර්න ස්ට්රෞස්ට්රප් විසින් C ක්රමලේඛන භාෂාවට දිගුවක් ලෙස නිපදවන ලද පොදු-කාර්යය ක්රමලේඛන භාෂාවකි, වර්ග සහිත "C" ලෙසද මෙය හැඳින්වේ. කාලයත් සමග භාෂාව සැලකිය යුතු ලෙස පුළුල් වී ඇත, නූතන C++ වල වස්තු-නැඹුරු, පොදු, සහ ශ්රිතමය ලක්ෂණ ද, ඊට අමතරව පහළ-මට්ටමේ මතක පරිහරණයට අවශ්ය පහසුකම් ද ඇත. එය සෑම විටම සම්පාදිත භාෂාවක් ලෙස ක්රියාත්මක කෙරේ, එම C++ සම්පාදක සපයන බොහෝ ආයතන අතරට නිදහස් මෘදුකාංග පදනම, LLVM, මයික්රොසොෆ්ට්, ඉන්ටෙල්, Embarcadero, ඔරකල්, සහ IBM අයත් වේ, එම නිසා එය බොහෝ පද්ධතිවලදී භාවිතා කළ හැක.[10] ඉතිහාසය![]() බිහානෙ ස්ටෘස්ට්රප් නම් ඩෙන්මාක් හා බ්රිතාන්ය සම්භවයක් ඇති පරිගණක විද්යාඥයා "සරණි සහිත C" ("C with Classes") භාෂාව සෑදීම 1979දී ආරම්භ කරන ලදී. ඔහුට මෙම කාර්යය කිරීමට තුඩු දුන් හේතූන් අතර විශාල වැඩසටහන් නිර්මානකරණයට හොඳ ධාවන වේගයක් සහිත ක්රමලේඛන භාෂාවක් එවකට නොමැති වීම ප්රධාන විය. ස්ටෘස්ට්රප් en:AT&T Bell Labs හී සේවය කරන සමයේ C සදහා Stimula භාෂාවේ තිබූ විශේෂ ලක්ෂණ එකතු කිරීම ඇරඹිණි. 1983 දී ප්රථම C++ වාණිජ නිකුතුව එළි දැක්විණි. පසුව 1985 දී ස්ටෘස්ට්රප් විසින් රචිත C++ හී නිල ග්රන්ථය en:The C++ Programming Language එළි දැක්විණි. නිරුක්තියC++ නිර්මාතෘට අනූව, C++ නාමය C වල නව වෙළුමක් බව හොවා දක්වයි. C++ යනු C භාෂාවේ C නම් විචල්යයේ අගය 1කින් වැඩි කිරීමට යොදන විදානයයි.[11] මුලින් C++ හදුන්වන ලද්දේ "new C", "C with classes" ආදී නම් වලිනි, අවසාන නම් ලබාදෙන ලද්දේ 1983 දී රික් මැසිටි(en:Rick Mascitti) විසිනි. සම්මතකරනය
නවතම සම්මතය වන්නේ C++14 ය. ප්රතිපත්තීන්C++ සකස් කර ඇත්තේ මූලුක ප්රතිපත්ති සමූයකට එකඟ වෙමිනි, මේවා en:The Design and Evolution of C++ (1994) යන පොතෙහි බිහානෙ ස්ටෘස්ට්රප් විස්තර කර ඇත.
සම්මත එකතුව(Standard library)C++ සම්මත එකතුව, C සම්මත එකතුව හා STL(සම්මත අච්චු එකතුව) යන දෙකෙන් සෑදී ඇත. මෙයින් භාෂාව පරිශීලනය කරන්නන්ට සම්මතයකට අනූව කෙරෙන දෑ නැවත නැවතත් තමන් විසින් ම කේතනය නොකර සම්මතයේ ඇති සම්මත ඉදිකිරීම(Implementation) භාවිත කිරීමේ අවස්ථාව සැලසේ. STL(සම්මත අච්චු එකතුව) මුල්වරට සාදන ලද්දේ HP ආයතනය විසිනි පසුව එය SGI මහින් වෙනස්කම් වලට භාජනය කෙරිනි. මෙම අච්චු වල විශේෂත්වය වන්නේ පොදු ඇල්ගොරිදම(en:Generic Algorithms) හා පොදු දත්ත ආකෘති නිර්මාණය කළ හැකිවීමයි. උදාහරණ වශයෙන් එකම කේතය භාවිතයෙන් පූර්ණ සංඛ්යා දෙකක් හා දශම සංඛ්යා දෙකක් එකතු කරගත හැක(බහුරූපීයතාවයේ මේ දෙකට වෙන වෙනම කේත ලිවිය යුතු වේ). මෙය සිදුවන්නේ සංග්රහ කාලයේ(Compile time) දී නිසා ධාවන කාලයේ දී ධාවන ප්රමාදයන් සිදු නොවේ. භාෂාවC++ හී වැඩිපුර දක්නට ලැබෙන්නේ C භාෂාවේ කාරක රීතීන්ය(syntax). පහත දැක්වෙන්නේ C++ නිර්මාතෘගේ "Hello World" වැඩසටහනයි. මෙය C++ හී සියලු සම්මතයන්ට අනූව නිවැරදි වැඩසටහනකි. යම් ශ්රිතයක ඵල වර්ගය( # include <iostream>
int main()
{
std::cout << "Hello, world!\n";
}
අතිබැර(Overload) කිරීම
C++ කාරක 35කට වැඩි සංඛ්යාවක් ලබාදේ, මේවා මූලික අංක ගණිතය, බිට වෙනස් කිරීම්, සංසන්දනය කිරීම්, තාර්කික කාරක හා වෙනත් ගණයන්ට අයිති වේ. වගුවේ දක්වා ඇති කාරක හැර වෙනත් සියලු ම කාරක අතිබැර කළ හැකිය. නව වස්තූන් සදහා විවිධ කාරක යොදා ගැනීමෙන් සිදුවන වෙනස්කම් භාවිතයට පහසු ආකාරයට සකස් කිරීමට කාරක අතිබැර කිරීමෙන් හැකි වේ. මතක ගබඩා කළමණාකරනයමේ සදහා ක්රම 4ක් පවතී
අච්චු(Templates)C++ හී අච්චු මගින් පොදු ක්රමලේඛනය හදුන්වාදෙයි, අච්චුවක් සෑදූවිට එය C++ කේතයක් ලිවීමට භාවිත වේ. මෙම කේතය ලියැවෙන්නේ සංග්රහ කාලයෙහිය එම නිසා ධාවිත කාලයේ දී ප්රමාදයන්ට ලක් නොවේ. අච්චූන් මඟින් අඩු කාලයක දී ධාවනය වන කේත අඩු කාලයක් වැයකිරීමෙන් සාදාගත හැක. C හී දක්නට ලැබෙන macro වැඩි දියුණු කිරීමෙන් C++ අච්චු සෑදී ඇත, මේවාට සාමාන්ය ආදේයකට වඩා යමක් කළ කැක. අච්චු ස්ථික බහුරූපියතාව ලබාදේ. වස්තූන්(Objects)ප්රධාන ලිපිය: [[en:C++ classes|en:C++ classes]]
C++ වස්තු පාදක ක්රමලේඛනය C භාෂාවට හදුන්වාදේ. වස්තුපාදක ක්රමලේඛනයේ ප්රධාන ලක්ෂණ 4 වන නිබන්ධය(Abstraction), සංක්ෂිප්තකරනය(Encapsulation), උරුමකරනය(Inheritance) හා බහුරූපියතාව(Polymorphism) සදහා C++ සහය දක්වන අතර සම්පත් තම භාරයට ගන්නා යම් වස්තුවක් සම්පත් වෙන් කරගැනීම වස්තුව ඉපැදූ විගස ලබාගැනීම හා මියයන විට එය නැවත පද්ධතියට භාර දීම(Resource Acquisition Is Initialization) යන විශේෂ වස්තුපාදක ලක්ෂණයටද C++ සහය දක්වයි. සංක්ෂිප්තකරනය(Encapsulation)C++ හී ආකාර 3කින් සංක්ෂිප්තකරනය කළ හැක,
උරුමකරනය(Inheritance)C++ හී සාමාන්ය උරුමකරනය මෙන් බහුඋරුමකරනය ද භාවිත කළ හැක. බහුඋරුමකරනයේදී මව හා පියා එක්ව සැදෙන දරුවා හට මව, පියා දෙදෙනාගේම ලක්ෂණ ලබාදීමට හැකිවේ. බහුරූපතාව(Polymorphism)බහුරූපතාව පොදු මුහුණතක් හරහා විවිධ වූ ගොඩනැගීම් වලට ඉඩ සලසා දේ. ස්ථිතික(Static)ශ්රිත අතිබැර(en:Function overloading) කිරීම හා අච්චු(templates) භාවිතය ස්ථිතික බහුරූපතාවට නිදසුන්ය. මේවා සංග්රහ කාලයේ දී සිදවේ. ශ්රිත අතිබැර කිරීමේ දී එක් ශ්රිතයකට වෙනස් පරාමිති ලැයිස්තු හෝ පෙරනිමි පරාමිති තිබිය යුතු වේ. ශ්රිත අත්සන(function signature) එකිනෙකට වෙනස් ශ්රිත පමණනක් අතිබැර කළ හැක. ගතික(Dynamic)උරමකරනයධාවන කාලයේ දී විචල්ය යොමු හරහා(references) හෝ දර්ශක හරකා(pointers) යම් මූලික සරණියකින්(base class) සෑදුන වස්තුවක උරුමවූ සරණියේ හෝ මූලික සරණියේ ඇති සාමාජිකයින් වෙත ප්රවේශ විය හැක(උදාහරණ ලෙස, මූලික සරණියේ ගණය(base type) භාවිතා වූ විට මූලික සරණියේ සාමාජිකයන් වෙත ප්රවේශය ලැබේ). අතථ්ය සාමාජික ශ්රිත(Virtual member functions)මෙයද උරුමකරනයේ දී දක්නට ලැබේ. යම් සරණියක් උරුම වන විට එහි ඇති යම් ශ්රිතයක පරාමිති ලැයිස්තුවට සමාන ලැයිස්තුවක් ඇති තවත් ශ්රිතයක් උරුමකරනය වූ සරණියේ ඇත් නම්, මූලික සරණියේ තිබූ ශ්රිතය ප්රතික්ෂේප වේ, මෙය සිදුවන්නේ ද ධාවන කාලයේ දීය. ශුද්ධ අතථ්ය සාමාජික ශ්රිත යනු මූලික සරණියේ එම ශ්රිතයට අදාළ අර්ථ දැක්වීමක්(function definition) නොමැති විට හා එම ප්රකාශයේ(function declaration) අමතර කියවීම්
යොමුව
අමතර කියවීම්
External links
![]() Wikibooks has a book on the topic of: More C++ Idioms
|
Portal di Ensiklopedia Dunia