C ක්රමලේඛකයින් නොසන්සුන් කරන C ++ පිළිබඳ දේවල්
කබාය යට මැජික් ගොඩක් සිදුවෙමින් පවතී; ඉදිකිරීම්කරුවන්, ඩිස්ට්රැක්ටර්ස්, අථත්ය ක්රම, සැකිලි ආදිය, සී ++ කේතයට සමාන සී කේතයට වඩා ලිවීමට පහසු සහ වේගවත් කළ හැකි නමුත් තේරුම් ගැනීමට හා තර්ක කිරීමට අපහසු වේ (ඔබ සී ++ සහ ඒ ආශ්රිත සම්මුතීන් කොතරම් හොඳින් ද යන්න මත පදනම්ව). පංතිය සඳහා ඉදිකිරීම්කරු (සහ එය රඳා පවතින ඕනෑම පංතියක්) නිර්වචනය කර ඇති ආකාරය මත පදනම්ව, බොහෝ කේතයන් Foo newFoo;
කැඳවිය හැකි තරම් සරල දෙයක් . පෝස්ට්ෆික්ස් බොහෝ විට මිල අධික පිටපත් මෙහෙයුමකට සම්බන්ධ වන බැවින්, බහාලුමක් හරහා නැවත ගමන් කරන විට වෙනුවට සම්මුතිය ලිවීමට හේතුව මෙයයි . Foo
++it
it++
++
ඔයා කරන දේ මත පදනම්ව, එහි හැක විශේෂයෙන් සරල කාර්යයන් සඳහා, සමහර-නොවැදගත් නොවන පොදු කාර්ය විය. පහත දැක්වෙන වැඩසටහන් දෙක ගන්න, පළමුවැන්න සී, දෙවන සී සී ++:
/* C version */
#include <stdio.h>
int main(void)
{
char greeting[] = "Hello, world";
printf("%s\n", greeting);
return 0;
}
/* end C version */
/* C++ version */
#include <iostream>
#include <string>
int main(void)
{
std::string greeting("Hello, world");
std::cout << greeting << std::endl;
return 0;
}
/* end C++ version */
අනන්යතා හැසිරීම, ප්රභවය අනුව විශාල වෙනසක් නොව, මම gcc 4.1.2 සමඟ වැඩ කරන SLES 10 කොටුව මත, කලින් උත්පාදනය කළ හැකි ප්රමාණය k 9kb ප්රමාණයෙන් ක්රියාත්මක වන අතර දෙවැන්න 12.5kb ඉක්මවා යයි (ප්රශස්තිකරණය නැත ), පාහේ 28% විශාලයි. C ++ string
වර්ගය, C, සංගීත පුස්තකාලය වඩා එක් රටකින් සමග වැඩ ගොඩක් පහසු වන අතර, C ++ ධාරා සී විෂය ධාරා වඩා ගොඩක් වඩාත් නම්යශීලී සහ රුචි වේ, නමුත් මේ වගේ ඇත්තටම මොළයේ-මිය ගිය කේතය සඳහා, ඔවුන් හැකි මගී වටිනා වනු නැත.
C ++ යනු C හා සසඳන විට විශාල භාෂාවකි, සමහර අතිශය සංකීර්ණ අර්ථකථන ඇත. C ට වඩා C ++ සමඟ ප්රවීණතාවයක් ලබා ගැනීමට බොහෝ කාලයක් ගත වේ, එයින් අදහස් කරන්නේ C ++ දන්නා බව කියා සිටින බොහෝ දෙනෙක් එය නොදන්නා අතර ඔවුන් සිතන ආකාරයට ය.
C ++ දේවල් C ++ ක්රමලේඛකයින් නොසන්සුන් කරයි
C යනු ඕනෑම පරිකල්පනයකින් ආරක්ෂිත ක්රමලේඛන භාෂාවක් නොවේ; සීමාවන් සූරාකෑම් හැසිරීම ගොඩක් කිරීමට පෙලගැස්මක් නායකත්වය මත පරීක්ෂා (එය දැන් මිය ගොස් හරහා විය gets
කාර්යය, හෝ හරහා scanf
සමග %s
හා %[
පරිවර්තනය නිශ්චයකක්). C ++ අවම වශයෙන් ඔබට දැනට අර්ථ දක්වා ඇති පරාසයෙන් පිටත ප්රවේශ වීමට උත්සාහ කරන්නේ නම් ව්යතිරේකයන් විසි කරන බහාලුම් ඔබට ලබා දෙයි; සී ඔබට ලබා දෙන සියල්ලම (ඔබ වාසනාවන්ත නම්) ඛණ්ඩනය උල්ලං is නය කිරීමකි.
C ++ මඟින් ඔබට ලබා දෙන මෙවලම් හා සසඳන විට C හි මතක කළමනාකරණය ඉතා ශ්රමයෙන් හා දෝෂ සහිත වේ. ඔබ ඔබේම කන්ටේනරයක් ගොඩනඟන්නේ නම්, සියලු ඇමතුම් malloc
හා free
ඇමතුම් ගැලපීම , ප්රතිපාදන සාර්ථක බව සහතික කිරීම, දෝෂයක් ඇති වුවහොත් අර්ධ වශයෙන් ප්රතිපාදන ලබා දීම යනාදිය ඔබ වගකිව යුතුය . C ++ හි, ඔබ අයිතම එකතු කරන්නේ හෝ කන්ටේනරයෙන් අයිතම ඉවත් කරන්න. ගැටලුවක් තිබේ නම්, ව්යතිරේකයක් විසි කරනු ලැබේ.
ඒ හා සමානව, සී ++ සපයන මෙවලම් හා සසඳන විට සී හි දෝෂ හැසිරවීම බූරුවාගේ වේදනාවකි (එනම්, ව්යතිරේක). ඇත්තෙන්ම විනෝදජනක දෙය නම් ඔබ මතක පොකුරක් වෙන් කර ඔබේ සැකසීමේදී බිත්තියකට පහර දීමයි; ඔබට පිටතට යා යුතු බැවින්, ඔබට එම මතකය නිවැරදි පිළිවෙලට මුදා හැරිය යුතුය. C ++ සහ RAII මූලධර්ම සමඟ, මෙය (සාපේක්ෂව) කිරීමට පහසුය.
ඉතින් මම එකකට වඩා එකක් භාවිතා කරන්නේ කවදාද?
ඔබ ලියන දෙය ව්යාජ එකක් නම්, එය කියවන්න / එය සමඟ මුසු කරන්න / යෙදුමෙන් ඉවත් වන්න, යෙදවුම් සහ ප්රතිදානයන් සහ කාර්ය සාධන කාරණා අනුව ඔවුන්ගේ හැසිරීම පිරිසිදුව විස්තර කළ හැකි නම්, C ++ ට වඩා C ට වැඩි කැමැත්තක් දක්වන්න. එසේ නොමැතිනම් C ++ ට වැඩි කැමැත්තක් දක්වන්න