programs - c++ in hindi



सी++ में मुख्य() के अंदर कुछ भी घोषित करना संभव नहीं है और फिर भी संकलन के बाद एक कार्यरत अनुप्रयोग है? (4)

एक साक्षात्कार में मुझे इस तरह के एक प्रश्न के साथ सामना करना पड़ा:

आपके मित्र ने आपको एक एकल स्रोत कोड फ़ाइल दी है जो कंसोल पर फिबोनाची संख्याओं को प्रिंट करता है। ध्यान दें कि मुख्य () ब्लॉक खाली है और इसके अंदर कोई बयान नहीं है।

समझाओ कि यह कैसे संभव है (संकेत: वैश्विक उदाहरण!)

मैं वास्तव में इस बारे में जानना चाहता हूं, ऐसी चीज कैसे संभव हो सकती है!


उम्मीद है की यह मदद करेगा

class cls
{
  public:
    cls()
    {
      // Your code for fibonacci series
    }
} objCls;

int main()
{
}

तो जैसे ही कक्षा के वैश्विक चर घोषित किए जाते हैं, कन्स्ट्रक्टर को बुलाया जाता है और वहां आप फिबोनैकी श्रृंखला को मुद्रित करने के लिए तर्क जोड़ते हैं।


फ़ाइल-स्कोप ऑब्जेक्ट्स के लिए सभी [*] कन्स्ट्रक्टर को main पहुंचने से पहले कॉल किया जाता है, जैसा कि गैर-ऑब्जेक्ट फ़ाइल-स्कोप चर के लिए सभी प्रारंभकर्ता अभिव्यक्ति करते हैं।

संपादित करें: इसके अलावा, सभी फाइल-स्कोप ऑब्जेक्ट्स के लिए सभी [*] विनाशकों को main निकास के बाद निर्माण के विपरीत क्रम में बुलाया जाता है। आप, सैद्धांतिक रूप से, एक वस्तु के विनाशक में अपने fibonacci कार्यक्रम डाल सकते हैं।

[*] ध्यान दें कि 'सभी' लाइब्रेरी को गतिशील रूप से लोड और अनलोड करने के व्यवहार को अनदेखा करते हैं, जिसे आपका प्रोग्राम सीधे लिंक नहीं किया गया था। वे तकनीकी रूप से बेस सी ++ भाषा के बाहर हैं, हालांकि।


यह संभवतया लागू किया गया है (या इसका एक संस्करण):

 void print_fibs() 
 {
       //implementation
 }

 int ignore = (print_fibs(), 0);

 int main() {}

इस कोड में, वैश्विक चरणीय ignore को main() फ़ंक्शन में प्रवेश करने से पहले प्रारंभ करना होगा। अब वैश्विक आरंभ करने के लिए, print_fibs() को निष्पादित करने की आवश्यकता है जहां आप कुछ भी कर सकते हैं - इस मामले में, print_fibs() संख्याओं की गणना करें और उन्हें प्रिंट करें! एक ही चीज़ जो मैंने निम्नलिखित प्रश्न में दिखाया है (जिसे मैंने बहुत पहले पूछा था):

ध्यान दें कि ऐसा कोड सुरक्षित नहीं है और सामान्य रूप से सबसे अच्छा टालना चाहिए। उदाहरण के लिए, std::cout ऑब्जेक्ट प्रारंभ नहीं किया जा सकता है जब print_fibs() निष्पादित किया जाता है, यदि ऐसा है तो फ़ंक्शन में std::cout क्या करेगा? हालांकि, अगर अन्य परिस्थितियों में, यह प्रारंभिक आदेश पर निर्भर नहीं है, तो प्रारंभिक कार्यों को कॉल करना सुरक्षित है (जो सी और सी ++ में एक आम प्रथा है)।


वैश्विक / स्थैतिक चर के प्रारंभ के दौरान चीजें हो सकती हैं। कोड शुरू होने पर कोड ट्रिगर होगा।





c++