আপকাস্টিং / ডাউন কাস্টিং কী?


16

পলিমারফিজম সম্পর্কে শিখার সময় আপনি সাধারণত এরকম কিছু দেখতে পান

class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data;  virtual void fn(){} }

আপকাস্টিং বা ডাউনকাস্টিং কী? কি (Derived*)base_ptr;একটি upCast বা হতাশ?

আমি এটিকে আপকাস্ট বলছি কারণ আপনি বেস থেকে দূরে সুনির্দিষ্ট কিছুতে চলে যাচ্ছেন। অন্যান্য লোকেরা আমাকে বলেছিল এটি একটি হতাশাব্যঞ্জক কারণ আপনি একটি মূলক্রমকে নীচে শীর্ষে মূল হিসাবে নির্দিষ্ট কিছুতে নিয়ে যাচ্ছেন। তবে অন্যান্য লোকেরা এটি বলে মনে হয় যা আমি এটি বলি।

একটি বেস পিটিআরটিকে কোনও উত্পন্ন পিটিআর তে রূপান্তর করার সময় এটিকে আপকাস্টিং বা ডাউনকাস্টিং বলা হয়? এবং যদি কেউ কোনও সরকারী উত্সের সাথে লিঙ্ক করতে পারে বা ব্যাখ্যা করতে পারে তবে কেন এটি দুর্দান্ত বলে ডাকা হয়েছে।



3
এটি কোনও সদৃশ নয়। এই প্রশ্নটি কী তা জিজ্ঞাসা করে, অন্যটি জিজ্ঞাসা করে কে নাম নিয়ে এসেছিল।
রবার্ট হার্ভে

1
@ রবার্টহারভে "এবং কেউ যদি কোনও সরকারী উত্সের সাথে লিঙ্ক করতে পারেন বা ব্যাখ্যা করতে পারেন কেন এটি এটিকে দুর্দান্ত বলে ডাকা হয়েছে।" , তবে সম্মত হয়েছে, এটিকে কেবল প্রশ্নের অংশ হিসাবে বিবেচনা করা যেতে পারে ।
স্টিভেন জিউরিস

ডেরাইভড ক্লাসে সেই ভার্চুয়ালটির দিকে নজর রাখুন । আপনি আর লিখতে চান না যতক্ষণ না আপনি ডেরাইভড ক্লাসটিকে আরও একবার আবিষ্কার করেন। অকার্যকর fn () {...} যথেষ্ট।
অ্যাপল

জাস্টাপ্রো: যোগ virtualকরা অপ্রয়োজনীয় তবে "আঘাত" করবে না। আপনি কেন মনে করেন যে এটিকে কেন সেই প্রসঙ্গে ব্যবহার করা উচিত নয়?
নিক বুগালিস

উত্তর:


17
Is (Derived*)base_ptr; an upcast or downcast?

এটি হতাশাব্যঞ্জক: এটিতে উইকিপিডিয়ায় নিবন্ধটি দেখুন ।

ইন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং , downcasting বা টাইপ পরিশোধন এর কাজ ভোটদান তার উদ্ভূত শ্রেণীর এক একটি বেস বর্গ একটি রেফারেন্স।

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

অন্য কথায়, যখন বেস ক্লাসের ( প্যারেন্ট ক্লাস ) একটি ভেরিয়েবলের উদ্ভূত শ্রেণীর ( শিশু শ্রেণির ) একটি মান থাকে , ডাউন কাস্টিং সম্ভব হয় ...


9

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

সম্পাদনা: সম্ভবত এটি একটি শীর্ষ মূল বিদ্বেষ।


LOL অবশ্যই +1 :)।

2

পৃষ্ঠার শীর্ষে "নীচে" এবং নীচে পাতাগুলি দিয়ে একটি গাছ আঁকার সাধারণ উপায় সম্পর্কে ভাবেন। আপনি যদি আপনার শ্রেণীর শ্রেণিবিন্যাসকে এভাবে উপস্থাপিত করেন তবে নীচের দিকে বেস শ্রেণি এবং নীচে কোথাও পাতাগুলি থাকলে আপ-কাস্টিং এবং ডাউন-ingালাই আক্ষরিক হয়ে উঠবে - এমন একটি জিনিস যা কোনও পাতা থেকে নীচের দিকে পাতা সরে যায় - castালাই এবং এমন কিছু যা পৃষ্ঠা থেকে নীচে থেকে পাতার দিকে সরে যায় এটি হ'ল ডাউন-কাস্ট।


2
তবে গাছগুলি উপরের দিকে যায় এবং তাদের কাণ্ড মাটি থেকে বেরিয়ে আসা মাটিতে থাকে। (এই কারণেই আমি চিন্তাভাবনা অব্যাহত রেখেছি)

@ অ্যাসিডজম্বি ২৪: তবে কম্পিউটার বিজ্ঞানের বইগুলিতে আপনি দেখতে পাবেন যে গাছগুলি সাধারণত উপরে বর্ণিত হিসাবে আমি বর্ণনা করেছি as
জেরি কফিন 21

আমি জানি কিন্তু আমি মজার ছিলাম। গাছগুলি (

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