- क्या संकलक शायद स्थिरांक शाब्दिक पैदा करता है भूल गया, लेकिन यह है कि एक चर नहीं है।
एक गैर-कॉन्स्ट संदर्भ एक शाब्दिक को इंगित नहीं कर सकता है।
$ जी ++ test.cpp test.cpp: समारोह में int main()': test.cpp:10: error: invalid initialization of non-const reference of type 'double&' from a temporary of type 'double' test.cpp:5: error: in passing argument 1 of
डबल foo (डबल &) '
test.cpp:
#include <iostream>
using namespace std;
double foo(double & x) {
x = 1;
}
int main() {
foo(5.0);
cout << "hello, world" << endl;
return 0;
}
दूसरी ओर, आप दे सकते हैं निम्नानुसार एक कॉन्स संदर्भ के लिए एक शाब्दिक। test2.cpp:
#include <iostream>
using namespace std;
double foo(const double & x) {
cout << x << endl;
}
int main() {
foo(5.0);
cout << "hello, world" << endl;
return 0;
}
स्रोत
2009-03-19 07:06:40
यह मेरे लिए बहुत अक्षम है। घोषित मूल्य के साथ केवल पढ़ने के खंड में मेमोरी लोकेशन बनाना और स्टैक पर एक चर बनाने के बजाय इसका उपयोग करना बेहतर नहीं होगा? दृश्यों के पीछे सभी, निश्चित रूप से ... –
यह कार्यान्वयन वैसे भी निर्भर है। और डबल इतना बड़ा नहीं है। – sharptooth
अस्थायी परिवर्तनीय निर्माण ऑब्जेक्ट्स के लिए भी अच्छा है। डबल होने के बजाय यदि यह कक्षा थी तो एक अस्थायी वस्तु उत्पन्न हो गई होगी और इसके निर्माता को भी बुलाया जाएगा। –