C++ में अगर मैं एक सामान्य कार्य है:सी ++ में स्ट्रिंग अक्षर के लिए प्रकार का कटौती कैसे काम करता है?
template <typename T>
void func(T& s)
{
std::cout << "in generic\n";
std::cout << typeid(s).name();
}
T
typeid(s).name()
को निष्कर्ष निकाला जाएगा।
लेकिन यह कैसे करता है, तो मुझे क्या करना आते हैं: सामान्य समारोह काम करता है
func("test");
यही कारण है, लेकिन यह एक नहीं करता है:
void func(const char*& s)
{
std::cout << "in overloaded\n";
std::cout << typeid(s).name();
}
मुझे पता है कि यह अगर मैं const char*&
const char*
को बदलने के लिए काम करेंगे या ओवरलोडेड फ़ंक्शन के हस्ताक्षर में const char* const&
, और यदि मैं अधिभारित फ़ंक्शन पर कोई तर्क पारित करना चाहता हूं तो यह अस्थायी होना चाहिए। मुझे समझ में नहीं आया कि T&
के साथ क्या हुआ, क्या इसे कटौती के बाद const char*&
में बदलना नहीं चाहिए?
और चार कॉन्स (&) [5] चार के लिए कॉन्स संदर्भों की एक सरणी है? – Pavel
@ पुलपॉल 1076: नहीं। यह 5 कॉन्स चार की सरणी का संदर्भ है। शब्दों में सूक्ष्म अंतर, लेकिन काफी महत्वपूर्ण (एक बात के लिए, आपके पास संदर्भों की एक सरणी नहीं हो सकती है)। –
धन्यवाद आदमी, अब मुझे यह लगता है कि – Pavel