මෙම newජාවා, ජාවාස්ක්රිප්ට්, සහ C # වගේ භාෂා ඉඟි පද පන්ති නව උදාහරණයක් නිර්මාණය කරයි.
මෙම වාක්ය ඛණ්ඩය සී ++ වෙතින් උරුම වී ඇති බව පෙනේ, එහිදී newවිශේෂයෙන් භාවිතා කරනුයේ පංතියක නව අවස්ථාවක් ගොඩවල් මත වෙන් කිරීම සඳහා වන අතර නව අවස්ථාව වෙත දර්ශකයක් ආපසු එවන්න. C ++ හි, වස්තුවක් තැනීමට ඇති එකම ක්රමය මෙය නොවේ. භාවිතා නොකර ඔබට තොගයක් මත වස්තුවක් සෑදිය හැකිය new- ඇත්ත වශයෙන්ම, මෙම වස්තූන් තැනීමේ ක්රමය C ++ හි වඩාත් සුලභ වේ.
එබැවින්, C ++ පසුබිමකින් එන විට, newජාවා, ජාවාස්ක්රිප්ට් සහ සී # වැනි භාෂාවල මූල පදය මට ස්වභාවික හා පැහැදිලිව පෙනෙන්නට තිබුණි. ඊට පස්සේ මම පයිතන් ඉගෙන ගන්න පටන් ගත්තා new. පයිතන්හිදී, නිදසුනක් ලෙස ඉදිකරන්නේ ඉදිකිරීම්කරු ඇමතීමෙන් ය:
f = Foo()
මුලදී, මෙය මට ටිකක් off ත් වූ බවක් පෙනෙන්නට තිබුණි, එය සිදු වන තුරු පයිතන්ට කිසිදු හේතුවක් නොමැති බව මට පෙනී ගියේය new, මන්ද සෑම දෙයක්ම වස්තුවක් බැවින් විවිධ ඉදිකිරීම් වාක්ය ඛණ්ඩ අතර ව්යාකූලත්වයක් අවශ්ය නොවේ.
ඒත් එක්කම මම හිතුවා - ඇත්තටම newජාවා වල තේරුම මොකක්ද? අප කිව යුත්තේ ඇයි Object o = new Object();? ඇයි නැත්තේ Object o = Object();? C ++ හි අනිවාර්යයෙන්ම අවශ්යතාවයක් ඇත new, මන්දයත් අප ගොඩවල් මත වෙන් කිරීම සහ තොගයේ වෙන් කිරීම අතර වෙනස හඳුනාගත යුතු බැවිනි, නමුත් ජාවාහි සියලු වස්තූන් ගොඩවල් මත ගොඩනගා ඇත, එබැවින් newමූල පදය පවා ඇත්තේ ඇයි ? එම ප්රශ්නයම ජාවාස්ක්රිප්ට් සඳහාද විමසිය හැකිය. මට එතරම් හුරු නැති C # හි, newවස්තු වර්ග සහ අගය වර්ග අතර වෙනස හඳුනා ගැනීමේදී යම් අරමුණක් තිබිය හැකි යැයි මම සිතමි , නමුත් මට විශ්වාස නැත.
කෙසේ වෙතත්, මට පෙනී යන්නේ C ++ ට පසුව පැමිණි බොහෝ භාෂාවන් සරලවම “උරුම” කර ඇති බවයි new- එය ඇත්ත වශයෙන්ම අවශ්ය නොවී. එය බොහෝ දුරට ගවේෂණාත්මක මූල පදයක් වැනි ය . කිසිම හේතුවක් නිසා අපට එය අවශ්ය නොවන බව පෙනේ, නමුත් එය එහි තිබේ.
ප්රශ්නය: මම මේ ගැන නිවැරදිද? එසේත් නැතිනම් newC ++ - ජාවා, ජාවාස්ක්රිප්ට් සහ සී # වැනි මතකයෙන් පාලනය වන භාෂාවන් විය යුතු නමුත් පයිතන් නොවීමට බලවත් හේතුවක් තිබේද?
fගැලවී නොයන විට , සිරස් ඉඩ වෙන් කරන්න.
fසංවෘත ශ්රිතය නැවත පැමිණෙන විට GC හට වස්තුව එකතු කළ හැකි බව ඔප්පු කිරීම හුදෙක් කාරණයකි .
newමූලික පදය ඇත්තේ මන්ද යන්නයි . ඇත්ත වශයෙන්ම මට නව විචල්ය, මෝඩ සම්පාදකයක් නිර්මාණය කිරීමට අවශ්යයි! ඒ හොඳ භාෂා මගේ මතය වැනි කාරක රීති ඇතැයිf = heap Foo(),f = auto Foo().