"বন্ধু" কীওয়ার্ড ব্যবহার করা হয়?


11

আপনি কী আমাকে friendক্লাসের ব্যক্তিগত ডেটাতে অ্যাক্সেসের অধিকার দেওয়ার জন্য কীওয়ার্ডটি পছন্দ করা যায় তা আমাকে ব্যাখ্যা করতে পারেন ?


1
আপনি যদি জিজ্ঞাসা করেন কেন কেন friendপছন্দ করা হয়েছিল, আপনি বাইরে থেকে ব্যক্তিগত ক্লাসের ডেটা অ্যাক্সেস করার জন্য সাধারণত কোন কোন উপায় ব্যবহার করেন?
বেনিয়ামিন ব্যানিয়ের

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

আমি জানি না কারণ আমি আজ বন্ধুর কথা সুযোগে পড়েছি। এবং নিবন্ধটি বলছে যদি আমি বন্ধু ব্যবহার না করি তবে আমি একটি একক শ্রেণি তৈরি করব।
ডাল্টন

উত্তর:


17

ক্লাসের ইন্টারফেসটি প্রসারিত করার সর্বোত্তম উপায় হল বন্ধু।
তবে দুর্দান্ত বিষয়টি হ'ল বন্ধুটি ক্লাসে নির্দিষ্ট আইটেমগুলিকে দৃ .়ভাবে আবদ্ধ করার জন্য আপনার অভিপ্রায়টি স্পষ্টভাবে দলিল করে।

দ্রষ্টব্য: বন্ধুকে ব্যবহার করে আপনি ক্লাসে বন্ধুকে শক্তভাবে আবদ্ধ করছেন।

একটি নিখুঁত উদাহরণ সি ++ এর স্ট্রিম অপারেটর

class Plop
{
    private:
        int  value;
        friend std::ostream& operator<<(std::ostream& stream, Plop const& data);
        friend std::istream& operator>>(std::istream& stream, Plop&       data);
};

std::ostream& operator<<(std::ostream& stream, Plop const& data)
{
     return stream << data.value << " ";
}
std::istream& operator>>(std::istream& stream, Plop&       data)
{
     return stream >> data.value;
}

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

দ্রষ্টব্য: এটি এনক্যাপসুলেশনটি ভাঙবে না তবে এটি প্লপ শ্রেণীর প্রয়োগের জন্য স্ট্রিম অপারেটরদেরকে দৃly়ভাবে আবদ্ধ করে তোলে (অর্থাত্ প্লপ শ্রেণীর প্রয়োগে যে কোনও পরিবর্তন আনতে স্ট্রিম অপারেটরগুলির প্রয়োগের পরিবর্তনের প্রয়োজন হবে)। তবে এটি প্রত্যাশিত। পাবলিক ইন্টারফেসের সমস্ত অংশ (সর্বজনীন / সুরক্ষিত পদ্ধতি সহ) প্রয়োগের জন্য দৃ the়ভাবে আবদ্ধ।

তবে দ্রষ্টব্য: আপনি ক্লাস ঘোষণার অংশ হিসাবে এই বাঁধাই স্পষ্ট করে ডকুমেন্ট করেছেন।

দ্রষ্টব্য: আমি ব্যক্তিগত ডেটা প্রকাশের জন্য পছন্দসই উপায় হিসাবে বন্ধুর উল্লেখ করব না। বন্ধুর অতিরিক্ত ব্যবহার বাস্তবায়ন প্রকাশের মতোই খারাপ হতে পারে। সমস্ত ভাষার বৈশিষ্ট্যগুলির মতো এটি ন্যায়বিচারের সাথে ব্যবহার করা উচিত।


আপনি যদি প্রকাশ্যে ডেটা অ্যাক্সেস করতে পারতেন (উদাহরণস্বরূপ একজন গেটারের মাধ্যমে) আপনি কি তার পরিবর্তে কোনও ফ্রি ফাংশন ব্যবহার করতে পারবেন?
Ioanna
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.