সি ++ এ বন্ধুত্বের ঘোষণা - সরকারী এবং ব্যক্তিগত মধ্যে পার্থক্য between


144

কোনও বন্ধু ফাংশন / শ্রেণিকে ব্যক্তিগত বা জনসাধারণ হিসাবে ঘোষণার মধ্যে কি পার্থক্য রয়েছে? আমি এই অনলাইন সম্পর্কে কিছুই খুঁজে পেতে পারে না।

এর মধ্যে পার্থক্য বলতে চাই:

class A
{
 public: 
      friend class B;
 };

এবং

class A
{
 private: //or nothing as the default is private
      friend class B;
 };

পার্থক্য আছে কি?


29
এই জাতীয় ভুল তথ্য ... কেউ বন্ধু হওয়ার যোগ্য ছিল না। আপনার বন্ধুরা আপনার প্রাইভেটের সাথে জড়িত থাকতে পছন্দ করে কিনা তা পুরোপুরি আপনার উপর নির্ভর করে।
টনি ডেলরয়

আমি কি জিজ্ঞাসা করতে পারি বন্ধু শ্রেণিটি কী: '(?
I Phantasm I

3
@ আই ফ্যান্টসম - এটি এমন একটি ঘোষণা যা friendক্লাসের কোনও উদাহরণ ক্লাসে ঘোষিত সদস্যদের অ্যাক্সেসের অনুমতি দেয় privateযা এই ঘোষণা দেয়। এই উদাহরণের ক্ষেত্রে, ক্লাস বি এর একটি উদাহরণ ক্লাস এ
বিআইইউ


2
এই প্রশ্নটি এই সাইটে আমার অনেক পয়েন্ট অর্জন করেছে। ঠিক আছে তাহলে.
বিআইইউ 12'14

উত্তর:


141

না, কোনও পার্থক্য নেই - আপনি কেবল বলবেন যে ক্লাস বি ক্লাস এ এর ​​বন্ধু এবং এখন এটির ব্যক্তিগত এবং সুরক্ষিত সদস্যদের অ্যাক্সেস করতে পারবেন, এগুলিই।


5
সুতরাং আমি অনুমান করি যে আমাকে যে কেউ বলেছিল তারা জানত না যে তারা কী বলছে। ধন্যবাদ :)
বিআইইউ

তবে ডকুমেন্টেশনের উদ্দেশ্যে, আপনি friendকোনও প্রয়োগের বিশদ বা ইন্টারফেসের অংশ বিবেচনা করবেন ?
TemplateRex

1
@ টেম্পলেটরেেক্স: আইএমও এটি ইন্টারফেসের অংশ - এটি বেশ দৃ claim় দাবি যে এমন কিছু আছে (এলোমেলো) class Friendযা বর্তমান শ্রেণির সমস্ত ব্যক্তিগত সদস্যদের অ্যাক্সেস করতে পারে।
ধারালো টুথ

র্যান্ডম ক্লাসের জন্য, হ্যাঁ তবে বলুন যে আপনি এর operator==(T, T)ব্যক্তিগত ডেটা সদস্যদের ব্যবহার করে বাস্তবায়ন করেছেন Tএবং friendএকটি বাস্তবায়ন বিশদ হিসাবে ব্যবহার করুন যাতে কোনও সদস্যহীন operator==হিসাবে উপস্থিত হতে পারে। আইএমও, এই বন্ধুত্ব প্রকাশ্য ইন্টারফেস প্রদর্শিত করা যাবে না (যেমন Doxygen যেমন দ্বারা উত্পন্ন হবে না)
TemplateRex

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

36

যেহেতু বাক্যবিন্যাস ক্লাসের সদস্য হিসাবে friend class Bঘোষণা করে না , সুতরাং আপনি যেখানে এটি লেখেন তাতে কিছু আসে যায় না, শ্রেণি শ্রেণীর বন্ধু ।ABA

এছাড়াও, আপনি friend class Bযদি protectedবিভাগে লিখেন Aতবে এর অর্থ এই নয় যে এটি Bকেবল protectedএবং এর publicসদস্যদের অ্যাক্সেস করতে পারে A

সর্বদা মনে রাখবেন যে একবার Bবন্ধু হয়ে গেলে Aএটি যে কোনও সদস্যের অ্যাক্সেস করতে পারে A, আপনি কোন বিভাগে লেখেন না কেন friend class B


3
সুতরাং আমি অনুমান করি যে আমাকে যে কেউ বলেছিল তারা জানত না যে তারা কী বলছে। ধন্যবাদ :)
বিআইইউ

-2

বন্ধুত্বের ঘোষণাটি একটি শ্রেণিবদ্ধ অংশে উপস্থিত হয় এবং শ্রেণীর ব্যক্তিগত এবং সুরক্ষিত সদস্যদের যেখানে বন্ধুত্বের ঘোষণা উপস্থিত হয় সেখানে কোনও ফাংশন বা অন্য শ্রেণীর অ্যাক্সেসের অনুমতি দেয়।

যেমন অ্যাক্সেস স্পেসিফায়ারগুলির বন্ধুত্বের ঘোষণার অর্থের কোনও প্রভাব থাকে না (তারা ব্যক্তিগত: বা জনসাধারণে: বিভাগে, কোনও পার্থক্য ছাড়াই প্রদর্শিত হতে পারে)।


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