আমি স্পষ্ট করে বলার ঝুঁকি নেব: আপনি ফাংশনটি কল করুন, যদি এটি বেস শ্রেণীর মধ্যে সংজ্ঞায়িত হয় তবে এটি স্বয়ংক্রিয়ভাবে উদ্ভূত শ্রেণিতে উপলব্ধ (যদি না হয় private
)।
যদি উত্পন্ন শ্রেণিতে একই স্বাক্ষরের সাথে কোনও ফাংশন থাকে তবে আপনি বেস ক্লাসের নামটি দুটি কলোনের পরে যুক্ত করে এটি নিষ্ক্রিয় করতে পারেন base_class::foo(...)
। আপনি জানানো হচ্ছে যে জাভা এবং C # মতো সি ++ নেই না "বেস শ্রেণী" (জন্য একটি শব্দ আছে super
বা base
) যেহেতু সি ++ সমর্থন একাধিক উত্তরাধিকার যা অস্পষ্টতা দেখা দিতে পারে।
class left {
public:
void foo();
};
class right {
public:
void foo();
};
class bottom : public left, public right {
public:
void foo()
{
//base::foo();// ambiguous
left::foo();
right::foo();
// and when foo() is not called for 'this':
bottom b;
b.left::foo(); // calls b.foo() from 'left'
b.right::foo(); // call b.foo() from 'right'
}
};
ঘটনাক্রমে, আপনি একই ক্লাস থেকে দুবার সরাসরি উপস্থাপন করতে পারবেন না কারণ অন্যটির উপর ভিত্তি করে কোনও বেস শ্রেণীর রেফারেন্স দেওয়ার উপায় নেই be
class bottom : public left, public left { // Illegal
};