ভেরিয়েবল কোনও ডেটা টাইপের উদাহরণ, তা কি সঠিক?


9

(যা প্রোগ্রামের সময়কালে এর মানকে পরিবর্তন করতে পারে)

বা 'কোনও কিছুর উদাহরণ' ক্লাস এবং অবজেক্টের সাথে কঠোরভাবে সম্পর্কিত? যদি তাই হয়, আপনি যখন সি ++ এ আসবেন তখন 'পরিবর্তনশীল' ধারণাটি কীভাবে সংজ্ঞায়িত করবেন?


সি # এবং জাভা দুটি আকর্ষণীয় উপায়ে সি ++ থেকে পৃথক। প্রথমত, তারা আধ্যাত্মিক প্রকারগুলি (এবং স্ট্রাক্ট) প্রকারের সাথে একত্রিত করার চেষ্টা করে (যাতে আপনি কোনও প্রাকের উদাহরণের বিষয়ে কথা বলতে পারেন), যদিও সি ++ নেই। দ্বিতীয়ত, সি # এবং জাভাতে, অবজেক্টের ধরণের ভেরিয়েবলগুলি হ'ল দৃষ্টান্তের (ক্লাসের) সংক্ষিপ্তভাবে উল্লেখ করা হয় এবং এটিও আমরা বস্তুর দিকে পয়েন্টার নিয়ে কথা বলি না, যেখানে সি ++ এর মতো @ কর্ডাম্পের উত্তর, অবজেক্টের ধরণের স্থানীয় ভেরিয়েবল হ'ল স্ট্যাকের দৃষ্টান্তগুলির সাথে আবদ্ধ এবং আমরা বস্তুগুলিতে এবং বস্তুর দিকে পয়েন্টারগুলির মধ্যে স্পষ্টভাবে পার্থক্য করি।
এরিক tদ

উত্তর:


8

আমি যতদূর জানি, সেই ধরণের প্রাকৃতিক উদাহরণগুলির মানগুলি কল করা সঠিক (উদাহরণস্বরূপ "সি ++ টাইপ সিস্টেম" , ভিজ্যুয়াল স্টুডিওর ম্যানুয়াল থেকে, তবে আমি এখনও অন্য উত্সের সন্ধান করছি), যদিও আমি বিশ্বাস করি এই শব্দটি অবজেক্টগুলি নিয়ে আলোচনা করার সময় বেশিরভাগ ব্যবহৃত হয়। একটি অবজেক্টটি ক্লাস সি এর উদাহরণ, যদি এটি নির্মাণ করা হয় কনস্ট্রাক্টর থেকে তৈরি করা হয় ক্লাস সি বা এর যে কোনও একটি সাবক্লাসে।

সি ++ এ পরিবর্তনশীল কোনও রানটাইম ধারণা নয়। এটি আপনার সংকলকের অভ্যন্তরে ভেরিয়েবলের নাম এবং একটি বিমূর্ত (কনস্ট না হলেও পরিবর্তনযোগ্য) অবস্থানের মধ্যে একটি লেজিকাল বাইন্ডিং হিসাবে উপস্থিত রয়েছে। কোনও প্রোগ্রাম সংকলিত হয়ে গেলে, ভেরিয়েবলগুলি আর থাকে না। পরিবর্তে, রেজিস্টার, মেমরি ইত্যাদিতে ডেটা পড়া এবং লেখা হয় is


2
" আদিম ধরণের মানগুলি সাধারণত সেই ধরণের উদাহরণ হিসাবে বলা হয় না; এটি বস্তু এবং শ্রেণীর জন্য সংরক্ষিত থাকে। " এটি মোটেও সত্য নয়। স্ট্যান্ডার্ডের কোথাও আদিম ধরণের মান বিবেচিত বস্তুগুলির মধ্যে নেই। তেমনি কোনও ব্যবহারকারীর সংজ্ঞায়িত শ্রেণি বা আদিম ধরণের উপর নির্ভর করে কোনও পরিবর্তনশীল পরিবর্তনের সংজ্ঞা দেয় না।
নিকোল বোলাস

@ নিকলবোলাস আমি কখনও শুনিনি যে কেউ সি ++ এর প্রসঙ্গে কোনও সংখ্যার উদাহরণ হিসাবে পূর্ণসংখ্যার উল্লেখ করে, এবং আমি নিশ্চিত যে এটি স্ট্যান্ডার্ডের সাথে স্পষ্টভাবে উল্লেখ না করলেও তারা কোনও কিছুর উদাহরণ নয় বলে সঠিকভাবে নিশ্চিত । যদি তা না হয় তবে সেগুলির উদাহরণ কী? আমিও দেখতে পাই না যেখানে এই উত্তর দাবি করে যে আদিম ধরণের এবং বস্তুর মধ্যে পরিবর্তনশীল পরিবর্তনের সংজ্ঞা; এটি (আফিক সঠিকভাবে) দাবি করে মনে হচ্ছে যে "উদাহরণস্বরূপ" এর সাথে একটি ভেরিয়েবলের সংজ্ঞা থাকে না।
Ixrec

2
@ ইক্সেরেক: " যদি না হয় তবে সেগুলির উদাহরণ কী? " টাইপটি int। ভেরিয়েবল ডিক্লেয়ারেশন কী করে তা নিয়ে কথা বলার সময় সি ++ স্ট্যান্ডার্ড আদিম ধরণের এবং অ-আদিম ধরণের মধ্যে পার্থক্য তৈরি করে না। সুতরাং T t;প্রকারের কোনও বস্তু ঘোষণা করে, প্রকারটি Tযাই হোক না কেন তা Tবিবেচনা করুন।
নিকল বোলাস

1
@Ixrec: লক্ষ্য করুন লিটারেল জিনিস একটি ভিন্ন ধরনের হয়। লিটারাল এক প্রকার মূল্যবান। তবে আপনি আক্ষরিক পরিবর্তনশীল করতে পারবেন না, সুতরাং এটি আলাদা আলোচনা।
নিকল বোলাস 23

5

বা 'কোনও কিছুর উদাহরণ' ক্লাস এবং অবজেক্টের সাথে কঠোরভাবে সম্পর্কিত? যদি তাই হয়, আপনি যখন সি ++ এ আসবেন তখন 'পরিবর্তনশীল' ধারণাটি কীভাবে সংজ্ঞায়িত করবেন?

এটি সি ++ এর জন্য যথাসম্ভব সংক্ষিপ্তভাবে স্থাপন করা

  • একটি পরিবর্তনশীল একটি হল নাম (কোড) একটি জন্য মেমরি অবস্থান রানটাইম এ নির্ধারণ করতে হবে।
  • একটি উদাহরণ হিসেবে বলা যায় একটি হল বস্তুর যা স্মৃতিতে থাকা রানটাইম এ।

শুধু পরিষ্কার করা:

  • মেমরির সমস্ত ক্ষেত্রে অবজেক্ট থাকে না। উদাহরণস্বরূপ, মেমরির কিছু ক্ষেত্রে 'আবর্জনা' মান থাকতে পারে।
  • সমস্ত মেমরি স্টোরিং অবজেক্টগুলিকে কোডে একটি নাম দেওয়া হবে না। অবজেক্টস যেমন উপর একটি অ্যারের মধ্যে একটি অবস্থান, অথবা কোথাও যেমন মেমরি আন-নামে এলাকায় রক্ষিত পারে গাদা একটি পয়েন্টার দ্বারা সমর্থিত।
  • যখন মেমরির কোনও অঞ্চলে আবর্জনা থাকে, তখন হয় হয় কারণ কোনও স্থানে সেই স্থানে কোনও বস্তু সূচিত করা হয়নি বা কারণ কিছু বিদ্যমান বস্তু নষ্ট হয়ে গেছে।

1
POD গুলি সি ++ এ অবজেক্ট। মেমরির সমস্ত অঞ্চলই বস্তু নয়, তবে পিওডিগুলি কেবল মেমরির অঞ্চল নয়।
নিকল বোলাস

1
আমি দ্বিতীয় নিকলবোলাস: পিওডি হ'ল বস্তু। যাইহোক, আপনি যখন একটি নতুন malloc()'এড, তবে অবিবেচনাবিহীন বাফার সম্পর্কে কথা বলবেন তখন আপনার একটি বক্তব্য রয়েছে : এটি একটি স্মৃতি অঞ্চল যা এখনও কোনও অবজেক্ট নয়। তেমনি, এমন একটি বস্তু যা স্পষ্টভাবে ধ্বংস হয়ে গেছে: এটি একটি স্মৃতি অঞ্চল যা এখন অবজেক্ট নয়।
মাস্টার -

@ নিকলবোলাসের ন্যায্য মন্তব্য, আমি এই শব্দটির কিছুটা পরিবর্তন করেছি
বেন কটরেল

1

আচ্ছা, "সঠিক" অর্থ কী?

আমরা যদি এটি সম্পর্কে কঠোর হতে চাই তবে আমাদের মধ্যে পার্থক্য করা দরকার:

  • সিনট্যাক্স পাশাপাশি: এক্সপ্রেশন আছে (স্ট্যাটিক) ধরনের
  • শব্দার্থবিদ্যা পাশ: বস্তু হয় দৃষ্টান্ত এর ক্লাস

আমি তখন একটি পরিবর্তনশীল হচ্ছে একটি অভিব্যক্তি-হবে আছে একটি টাইপ। এর মান — যে বিষয়টিকে এটি উল্লেখ করে এটি কোনও শ্রেণির উদাহরণ হতে পারে। এবং নোট করুন যে ভেরিয়েবলের ধরণ এবং অবজেক্টের ক্লাস সাধারণত একই জিনিস নয় — ভেরিয়েবলের স্ট্যাটিক টাইপটি অবজেক্টের রানটাইম ক্লাসগুলির উপর একটি উপরের আবদ্ধ রাখে , যাতে ক্লাসগুলি অবশ্যই শ্রেণীর উপ -টাইপ হতে হবে যা টাইপের সাথে মিল রাখে।

আপনি কি সর্বদা সেই বড় মুখের পুনরাবৃত্তি করতে চান? হেক নং বনাম কতটা কড়াভাবে আমরা কথা বলতে চাই তা নির্ভর করে প্রসঙ্গে। তাই প্রায়শই এটি বলতে সমস্যা হয় না যে "ভেরিয়েবল এই ধরণের একটি উদাহরণ"। সত্যিই সেখানে যা ঘটছে তা হ'ল আমরা ভেরিয়েবল এবং টাইপটি মেটোনাইমিকভাবে ব্যবহার করছি তার রানটাইম ক্লাসের অবজেক্ট এবং একটি সুপারক্লাসের জন্য।


1

আপনি নিজের পুরো জীবন শুদ্ধিকতা এবং পরিশীলিততায় ব্যয় করতে না চাইলে ... হ্যাঁ।

প্রতিবার যখন আপনি এমন কিছু রাখেন যা অনন্যতাকে অন্যরকম স্বীকৃত জিনিসগুলি ইনস্ট্যান্টেশন করার জন্য জাল করতে ব্যবহারকে চিহ্নিত করে।

  • একটি প্রকল্প পণ্য মধ্যে তাত্ক্ষণিক
  • একটি উত্স এক্সিকিউটেবল মধ্যে তাত্ক্ষণিক
  • প্রকারভেদে একটি টেম্পলেট ইনস্ট্যান্টিয়েট।
  • ভেরিয়েবলগুলিতে একটি টাইপ ইনস্ট্যান্টিয়েট।

এই ইনস্ট্যান্টেশনগুলির কিছুটির আরও সঠিক নাম থাকতে পারে তবে সাধারণভাবে এটি কাজ করে।


0

অনেক লোক ক্লাসের উদাহরণগুলির জন্য "উদাহরণ" সংরক্ষণ করে। আপনি যদি সি ++ তে এটি করেন তবে একটি ভেরিয়েবল কোনও শ্রেণীর উদাহরণ, উদাহরণের উল্লেখ, কোনও উদাহরণের পয়েন্টার বা আদিম ধরণের হতে পারে (আপনি সম্ভবত সেই প্রসঙ্গে ক্লাস হিসাবে স্ট্রাক্ট গণনা করতে পারেন, তারা প্রায় সম্পূর্ণ একই)। জাভা বা অবজেক্টিভ-সিতে ভেরিয়েবলগুলি কখনই দৃষ্টান্ত হতে পারে না তবে সম্ভবত উদাহরণগুলির উল্লেখ to

ভুলে গেছেন: অল্প সময়ের জন্য, একটি সি ++ পয়েন্টার কাঁচা মেমরির পয়েন্টার হতে পারে, উদাহরণস্বরূপ কনস্ট্রাক্টর কার্যকর করা শুরু করার আগে "এটি"। আপনি সম্ভবত এই মুহূর্তে * এটি কল করতে চাইবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.