के बाहर बुलाया गया उदाहरण नीचे दिए गए उदाहरण में, B::f()
क्यों कहा जाता है, भले ही यह निजी है?निजी समारोह सदस्य वर्ग
मुझे यह तथ्य पता है कि: उस ऑब्जेक्ट को इंगित करने के लिए उपयोग की जाने वाली अभिव्यक्ति के प्रकार का उपयोग करके कॉल पॉइंट पर एक्सेस की जांच की जाती है जिसके लिए सदस्य फ़ंक्शन कहा जाता है।
#include <iostream>
class A {
public:
virtual void f() { std::cout << "virtual_function"; }
};
class B : public A {
private:
void f() { std::cout << "private_function"; }
};
void C(A &g) { g.f(); }
int main() {
B b;
C(b);
}
क्योंकि यह ए में सार्वजनिक है, संभवतः और इस तथ्य के कारण कि ए माता-पिता है और आप इसे किसी ऑब्जेक्ट से उपयोग कर रहे हैं, यह बच्चे पर दायरे की जांच करने से परेशान नहीं है, यह इस तथ्य से अतिरंजित है कि यह सिर्फ मेरे विचारों में सार्वजनिक है। – tom
आपने जो कहा है, उसे समझाता है - 'सी' में 'जी' का स्थिर प्रकार 'ए 'है, और' एफ() '' ए' का सार्वजनिक सदस्य कार्य है। यह सब अभिगम नियंत्रण परवाह करता है। 'सी()' के पैरामीटर प्रकार को 'बी &' में बदलें और आपका कोड संकलित करने में विफल रहेगा। – Praetorian