new
জাভা, জাভাস্ক্রীপ্ট, এবং C # মত ভাষায় শব্দ একটি বর্গ একটি নতুন দৃষ্টান্ত সৃষ্টি করে।
এই বাক্যবিন্যাসটি সি ++ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত বলে মনে হয়েছে, যেখানে new
বিশেষত গাদা অংশের একটি শ্রেণির নতুন উদাহরণ বরাদ্দ করতে এবং নতুন পয়েন্টটিতে একটি পয়েন্টার ফিরিয়ে আনতে ব্যবহৃত হয়। সি ++ এ, কোনও অবজেক্ট তৈরির একমাত্র উপায় এটি নয়। ব্যবহার না করে আপনি স্ট্যাকের উপরেও কোনও অবজেক্ট তৈরি করতে পারেন new
- এবং বাস্তবে বস্তু তৈরির এই পদ্ধতিটি সি ++ তে অনেক বেশি সাধারণ common
সুতরাং, একটি সি ++ পটভূমি থেকে আসা new
জাভা, জাভাস্ক্রিপ্ট, এবং সি # এর মতো ভাষার কীওয়ার্ডটি আমার কাছে স্বাভাবিক এবং স্পষ্ট বলে মনে হয়েছিল। তারপরে আমি পাইথন শিখতে শুরু করেছি, যার new
কীওয়ার্ড নেই। পাইথনে, উদাহরণস্বরূপ কেবল কনস্ট্রাক্টরকে কল করে যেমন:
f = Foo()
প্রথমে, এটি আমার কাছে কিছুটা বন্ধ মনে হয়েছিল, যতক্ষণ না এটি ঘটেছিল যে পাইথনের কোনও কারণ নেই new
কারণ সবকিছুই একটি বস্তু তাই বিভিন্ন কনস্ট্রাক্টর সিনট্যাক্সের মধ্যে বিভ্রান্ত করার দরকার নেই।
কিন্তু তখন আমি ভাবলাম - new
জাভাতে আসলেই কী লাভ? আমরা কেন বলব Object o = new Object();
? শুধু কেন নয় Object o = Object();
? সি ++ তে অবশ্যই একটি প্রয়োজনীয়তা রয়েছে new
, যেহেতু আমাদের স্তূপে বরাদ্দ এবং স্ট্যাকের বরাদ্দের মধ্যে পার্থক্য করা দরকার, তবে জাভাতে সমস্ত বস্তু গাদাতে নির্মিত হয়, তবে new
কীওয়ার্ডটি কেন ? একই প্রশ্ন জাভাস্ক্রিপ্ট জন্য জিজ্ঞাসা করা যেতে পারে। সি # তে, যার সাথে আমি খুব কম পরিচিত, আমার মনে new
হয় অবজেক্টের ধরণ এবং মানের ধরণের মধ্যে পার্থক্য করার ক্ষেত্রে কিছু উদ্দেশ্য থাকতে পারে তবে আমি নিশ্চিত নই।
নির্বিশেষে, এটি আমার কাছে মনে হয় যে অনেকগুলি ভাষা সি ++ এর পরে এসেছে কেবলমাত্র মূল শব্দটি "উত্তরাধিকার সূত্রে প্রাপ্ত" new
- সত্যই এটির প্রয়োজন ছাড়াই। এটি প্রায় একটি আবিষ্কারীয় কীওয়ার্ডের মতো । আমাদের কোনও কারণে এটির প্রয়োজন হবে বলে মনে হয় না, এবং এখনও এটি রয়েছে।
প্রশ্ন: আমি কি এ সম্পর্কে সঠিক? বা এমন কিছু বাধ্যতামূলক কারণ রয়েছে যা জা new
+, জাভাস্ক্রিপ্ট এবং সি # এর মতো অনুপ্রেরণামূলক মেমরি-পরিচালিত ভাষাগুলিতে সি ++ তে থাকা প্রয়োজন তবে পাইথন নয়?
f
অর্থাত্ যখন ফাংশনটি এড়ায় না, স্ট্যাকের স্থান বরাদ্দ করুন।
f
বেষ্টনী ফাংশন ফিরে আসলে জিসি বস্তু সংগ্রহ করতে পারে ।
new
কীওয়ার্ড রয়েছে। অবশ্যই আমি একটি নতুন ভেরিয়েবল, বোকা সংকলক তৈরি করতে চাই! একটি ভাল ভাষা আমার মতে মত একটি বাক্য গঠন হবেf = heap Foo()
,f = auto Foo()
।