में दिखाई देने वाले फ़ंक्शन में घोषित की गई है यह कोड क्यों काम करता है? c++14
सी ++ संरचना मुख्य
// Example program
#include <iostream>
#include <string>
using namespace std;
auto fun()
{
struct a
{
int num = 10;
a()
{
cout << "a made\n";
}
~a()
{
cout << "a destroyed\n";
}
};
static a a_obj;
return a_obj;
}
int main()
{
auto x = fun();
cout << x.num << endl;
}
साथ कैसे प्रकार a
मुख्य में दिख रहा है? अगर मैं auto x=
से a x=
बदलता हूं तो यह स्पष्ट रूप से संकलित नहीं होता है, लेकिन a
प्रकार के बारे में मुख्य कैसे पता चलता है?
static
घोषणा तब से है जब मैं किसी और चीज की जांच करने की कोशिश कर रहा था लेकिन फिर मैंने इस व्यवहार पर ठोकर खाई।
इसे यहाँ चल रहा है: https://wandbox.org/permlink/rEZipLVpcZt7zm4j
यह 'मजेदार' के रिटर्न प्रकार की वजह से जानता है जिसे 'संरचना ए' के रूप में लिया जाता है। – nwp
यदि मैं 'ऑटो x = 'से' x =' में बदलता हूं तो यह संकलित नहीं होता है, 'ऑटो' क्यों काम करता है? – PYA
बेकउस कंपाइलर संकलित समय में लौटा चर घटा देगा ताकि वह जानता है कि यह 'संरचना' होगा। यदि आप 'x =' का उपयोग करते हैं, तो संकलक किसी अन्य दायरे में घोषित होने के कारण इस डेटाटाइप को नहीं जानता है। –