मान लीजिए कि मेरे पास एक ऐसा फ़ंक्शन है जो एक महत्वपूर्ण परिणाम और कई महत्वपूर्ण परिणाम देता है। मैं इसे घोषित ताकि महत्वहीन परिणाम संदर्भ द्वारा दिया जाता है:फ़ंक्शन से रिटर्न-बाय-रेफरेंस परिणाम को अनदेखा करना
int CalculateStuff(int param1, int param2, int& result1, int& result2);
मैं कुछ सामान की गणना करने के लिए इस समारोह कॉल करना चाहते हैं, लेकिन कॉल स्थल पर मैं महत्वहीन परिणाम अनदेखा करना चाहते। मैं यह कर सकता है इस प्रकार है:
...
int dummy1, dummy2;
int result = CalculateStuff(100, 42, dummy1, dummy2);
... // do something with the result
मैं एक और तरीका डमी चर घोषित करने के बिना भी ऐसा ही करने पर विचार करना चाहते हैं:
int result = CalculateStuff(100, 42, *new int, *new int);
यह एक स्मृति रिसाव (अस्वीकार्य) है, लेकिन एक फायदा है "डमी" नामों से अधिक स्पष्ट रूप से मेरा इरादा दिखा रहा है (परिणामों को अनदेखा कर रहा है)।
तो, क्या होगा अगर मैं यह लिखा था इस प्रकार है:
int result = CalculateStuff(100, 42, auto_ptr(new int).get(), auto_ptr(new int).get());
यह कानूनी है? फ़ंक्शन का कोड निष्पादित होने पर अस्थायी पूर्णांक अभी भी मौजूद होंगे? क्या मुझे auto_ptr
के बजाय unique_ptr
का उपयोग करना चाहिए?
(कृपया मेरे कोड पुनर्रचना का सुझाव नहीं, मैं शायद होगा - लेकिन पहले मैं समझने के लिए कि यह कैसे काम करता है सामान चाहते हैं)
एक टिप्पणी के रूप में जोड़ा गया है क्योंकि यह वास्तव में आपके प्रश्न का उत्तर नहीं देता है - लेकिन मैं आमतौर पर एक अस्थायी नाम घोषित करता हूं और यदि यह आता है तो पास करें। "गणना करें (100, 42, _, _); उचित रूप से स्पष्ट लगता है। – jcoder