আইএমএইচও, বিদ্যমান উত্তরগুলি এর "কেন" ব্যাখ্যা করার জন্য একটি দুর্বল কাজ করে - কোন আচরণের বৈধতা পুনরুদ্ধার করার বিষয়ে খুব বেশি মনোযোগ কেন্দ্রীভূত করে। "অ্যাক্সেস মডিফায়ারগুলি ক্লাস স্তরে কাজ করে, না অবজেক্ট স্তরে।" - হ্যাঁ কিন্তু কেন?
এখানে বহুল আলোচনামূলক ধারণাটি হ'ল এটি প্রোগ্রামার (গুলি) ডিজাইন, রচনা এবং বর্গ বজায় রাখার জন্য যারা (O) এনওপ্যাপুলেশনকে পছন্দসই বুঝতে এবং এর বাস্তবায়নকে সমন্বয় করার ক্ষমতাপ্রাপ্ত বলে প্রত্যাশিত। সুতরাং, আপনি যদি লিখছেন class X
, আপনি কীভাবে কোনও পৃথক X x
অবজেক্টের অ্যাক্সেস সহ কোড দ্বারা কীভাবে ব্যবহার করা যেতে পারে তা নয়, তবে কীভাবে এনকোডিং করছেন :
- উত্পন্ন ক্লাসগুলি এর সাথে (বিকল্পভাবে খাঁটি ভার্চুয়াল ফাংশন এবং / অথবা সুরক্ষিত অ্যাক্সেসের মাধ্যমে) ইন্টারঅ্যাক্ট করতে সক্ষম হয় এবং able
- স্বতন্ত্র
X
অবজেক্টগুলি আপনার নকশা থেকে পোস্ট-কন্ডিশন এবং আক্রমণকারীদের সম্মান জানিয়ে অভিহিত আচরণগুলি সরবরাহ করতে সহযোগিতা করে।
এটি কেবল অনুলিপি নির্মাণকারীই নয় - একটি দুর্দান্ত অনেকগুলি ক্রিয়াকলাপ আপনার শ্রেণীর দুটি বা ততোধিক উদাহরণ জড়িত করতে পারে: আপনি যদি তুলনা করছেন, যোগ / গুণগুণ / ভাগ, কপি-নির্মাণ, ক্লোনিং, বরাদ্দকরণ ইত্যাদি করেন তবে এটি প্রায়শই ঘটে থাকে আপনি হয় অন্য অবজেক্টে কেবল প্রাইভেট এবং / অথবা সুরক্ষিত ডেটা অ্যাক্সেস থাকতে হবে, বা এটি একটি সহজ, দ্রুত বা সাধারণভাবে আরও ভাল ফাংশন বাস্তবায়নের অনুমতি দিতে চায়।
বিশেষতঃ এই ক্রিয়াকলাপগুলি এগুলি করতে ব্যক্তিগতকৃত অ্যাক্সেসের সুবিধা নিতে পারে:
- (অনুলিপি নির্মাতারা) "আরএইচএস" (ডান হাতের দিকের) অবজেক্টের একটি প্রাইভেট সদস্যকে একটি প্রারম্ভিক তালিকায় ব্যবহার করুন, যাতে কোনও সদস্যের ভেরিয়েবল নিজেই ডিফল্ট-নির্মিত (যদি আইনী হয়ে থাকে) এর পরিবর্তে কপি-বিল্ট হয় তবে খুব বেশি বরাদ্দ (আবার, আইনী হলে)
- রিসোর্সগুলি ভাগ করুন - ফাইল হ্যান্ডলগুলি, ভাগ করা মেমরি বিভাগগুলি,
shared_ptr
রেফারেন্স ডেটা ইত্যাদিতে etc.
- জিনিসের মালিকানা নিন, যেমন
auto_ptr<>
নির্মাণাধীন অবজেক্টের মালিকানা "চাল"
- ব্যক্তিগত "ক্যাশে", ক্রমাঙ্কন, বা রাষ্ট্র সদস্যদের নতুন বস্তুটি স্ক্র্যাচ থেকে পুনরায় জন্মানো না করে অনুকূলভাবে ব্যবহারযোগ্য স্থানে তৈরি করার প্রয়োজন ছিল
- অনুলিপি / অ্যাক্সেস ডায়াগোনস্টিক / অবজেক্টে রাখা তথ্যটি অনুলিপি করা হয়েছে যা সর্বজনীন এপিআইয়ের মাধ্যমে অন্যথায় অ্যাক্সেসযোগ্য নয় তবে পরে কিছু ব্যতিক্রম বস্তু বা লগিং দ্বারা ব্যবহার করা যেতে পারে (যেমন সময় / পরিস্থিতিতে সম্পর্কে কিছু যখন "মূল" অনুলিপি-নির্মিত না নির্মাণ করা হয়)
- কিছু তথ্যের আরও দক্ষ অনুলিপি সম্পাদন করুন: উদাহরণস্বরূপ অবজেক্টগুলিতে
unordered_map
সদস্য থাকতে পারে তবে প্রকাশ্যে কেবল এক্সপোজ begin()
এবং end()
পুনরুদ্ধারকারী - আপনার কাছে সরাসরি অ্যাক্সেস সহ দ্রুত অনুলিপি করার ক্ষমতা size()
থাকতে reserve
পারে; খারাপ এখনো যদি তারা শুধুমাত্র এক্সপোজ at()
এবং insert()
এবং অন্যথায় throw
....
- অনুলিপি পিতামাতা / সমন্বয় / পরিচালিত অবজেক্টগুলিতে অনুলিপি করুন যা ক্লায়েন্ট কোডের জন্য অজানা বা কেবল লেখার জন্য থাকতে পারে