ক্লাস ভার্সাস স্ট্রাক্ট


12

সি ++ এবং অন্যান্য প্রভাবিত ভাষায় স্ট্রাকচার ( struct) নামে একটি গঠন রয়েছে এবং অন্যটি নামে পরিচিত class। উভয়ই ফাংশন এবং ভেরিয়েবল ধরে রাখতে সক্ষম। কিছু পার্থক্য হ'ল:

  1. ক্লাসকে স্তূপে structমেমরি দেওয়া হয় এবং স্ট্যাকটিতে মেমরি দেওয়া হয় (মন্তব্য: এটি সি ++ এর পক্ষে ভুল, তবে ওপি "প্রভাবিত ভাষাগুলি" বলে যা সম্ভবত এটি সঠিক)
  2. ক্লাস ভেরিয়েবল ডিফল্টরূপে ব্যক্তিগত এবং structসেগুলি সর্বজনীন

আমার প্রশ্নটি: structকোনওভাবে ক্লাসের জন্য পরিত্যক্ত ছিল ? যদি তাই হয় তবে কেন? উপরের পার্থক্যগুলি ব্যতীত, structএকটি শ্রেণীর মতো একই জিনিসগুলি করতে পারে। তাহলে কেন তা পরিত্যাগ করবেন?


পরিত্যাগ দ্বারা আমি বোঝাতে চেয়েছিলাম কেন একজন অন্যটির উপরে ব্যবহৃত হয়।
promethespk

আপনার প্রশ্নের উত্তর নিজেই দেয় বলে আমি মনে করি।
উমায়ের এ।

3
শ্রেণি এবং স্ট্রকের মধ্যে পার্থক্য ভাষা নির্ভর। সি ++ থেকে কিছু পাঠ সত্যিই সি # তে প্রযোজ্য নয়।
কাজ

6
Uhhhh। সি ++ এ আপনি স্ট্যাক বা হিপগুলিতে অবজেক্টগুলি বরাদ্দ করতে পারেন। আপনি যেখানে চান।
jojo

8
ভুল, ভুল, ভুল স্ট্যাক বনাম হিপটির পার্থক্যের সাথে কোনও সম্পর্ক নেই
অ্যারোনআউট

উত্তর:


11

একেবারেই পরিত্যক্ত হয় না। বস্তুত, C # এর মত এমনকি আধুনিক ভাষা যার ভারী ব্যবহার করতে classএখনো আপনাকে কি দিতে struct। এটি যখন একে অপরকে বেছে নেওয়া দরকারী তখন আমি আপনাকে এই নিবন্ধটি উল্লেখ করি:

ক্লাস এবং স্ট্রাকচারের মধ্যে নির্বাচন করা

এমএসডিএন নিবন্ধ থেকে উদ্ধৃত:

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

ধরণের নিম্নলিখিত বৈশিষ্ট্যগুলির মধ্যে না থাকলে কোনও কাঠামো সংজ্ঞায়িত করবেন না:

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

4
এই উত্তরটি প্রকৃতপক্ষে। নেট / সি # স্ট্রাক্ট / শ্রেণীর অর্থ সি ++ এর চেয়ে পৃথক হিসাবে বিভ্রান্ত: সি ++ তে কাঠামো এবং শ্রেণীর মধ্যে প্রায় কোনও পার্থক্য নেই এবং প্রথম পয়েন্টটিতে প্রশ্নটি সম্পূর্ণই ভুল, যা সি # এবং ডি তে সঠিক তবে সি ++ তে নয়। সুতরাং এই নিবন্ধটির লিঙ্কটি, যা প্রায়। নেট, সত্যিই ভুল। এটি সি ++ নয়!
ক্লাইম

@ ক্লেম প্রযুক্তিগতভাবে এটি সি # এর পক্ষেও ঠিক নয় (স্ট্রাকস হিপসের উপরেও থাকতে পারে) সি # এর মধ্যে গুরুত্বপূর্ণ পার্থক্যটি মূল্য শব্দার্থবিজ্ঞান এবং রেফারেন্স শব্দার্থবিজ্ঞানের মধ্যে, একটি পার্থক্য যা সি ++ এর প্রয়োজন হয় না কারণ এটি কোনও কিছুর জন্য মান বা রেফারেন্স থাকতে পারে
জে.কে.

17

আপনি সি ++ সম্পর্কে ভুল করেছেন: শ্রেণি এবং কাঠামোর মধ্যে একমাত্র উল্লেখযোগ্য পার্থক্য হ'ল ডিফল্ট অ্যাক্সেস স্পেসিফায়ার পার্থক্য। স্ট্রাক্ট এবং ক্লাস সব উদ্দেশ্য এবং উদ্দেশ্যে প্রতিশব্দ জন্য, আমি বিশ্বাস করি যে কাঠামো সি এর সাথে সামনের সামঞ্জস্যের জন্য রাখা হয় around


7
এটাই না. স্ট্রাক্ট একটি ভাল পছন্দ যখন আপনি কেবল একটি বস্তুতে গুচ্ছের একগুচ্ছ ডেটা ফেলে দিতে চান এবং এতে কোনও আচরণ যুক্ত করবেন না।
কোয়ান্ট_দেব

2
@ কোয়ান্ট: এটি স্ট্রাক ব্যবহারের এক ভয়ানক কারণ। আমি সত্যিই আশা করি যে মন্তব্যটি জিভ-ইন-গাল ছিল।
অ্যারোনআউট

1
@ অ্যারোনট কেন? : Struct হয় ব্যবহার আমার দৃশ্য মোটামুটি মান, উদাহরণস্বরূপ এই উত্তরটি দেখুন stackoverflow.com/questions/54585/...
quant_dev

1
@ অ্যারোনট আপনি কীভাবে একাধিক মান ফিরিয়ে আনবেন? বলুন, একটি সংগ্রহকারী মডেল পরিষ্কার দাম, নোংরা মূল্য এবং উপার্জিত অর্থের যোগান প্রদান করে।
কোয়ান্ট_দেব

1
@ কোয়ান্ট_দেব - আপনি আপনার উদ্দেশ্যে (এবং প্রাক্তন সি প্রোগ্রামারদের ক্ষেত্রে যেগুলি প্রচুর পরিমাণে বোঝায়) এর জন্য কোনও মেটা-অর্থ সংযুক্ত করার সিদ্ধান্ত নিতে পারেন, তবে এটি কাঠামোর মধ্যে একমাত্র পার্থক্য এবং পরিবর্তনকে পরিবর্তন করে না সি ++ এ শ্রেণীর কীওয়ার্ডগুলি ডিফল্ট অ্যাক্সেস।
জোরিস টিমারম্যানস

2

ভাষা ডি শ্রেণি এবং কাঠামোর মধ্যে বৃহত্তর পার্থক্য তৈরি করেছে

ডি কাঠামো স্ট্রাকচার কিছুই নয় যা আপনি কল করতে পারেন এমন কিছু ফাংশন সহ স্ট্যাক বরাদ্দকৃত ডেটা রেকর্ড ( উত্তরাধিকারের কোনও বিকল্প নেই যদি আপনি এনাম + ইউনিয়ন সেটআপ ব্যবহার না করেন অর্থাৎ পলিমারফিজম নিজে প্রয়োগ না করেন) যা মান দ্বারা পাস হয়

শ্রেণীর মতো আমরা ব্যবহার করতে পারি: ভার্চুয়াল ফাংশন, হিপ বরাদ্দ, (একক) উত্তরাধিকার, রেফ দ্বারা পাস

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