मैं अगर वहाँ एक C++ वर्ग समारोह के अन्य नाम के लिखने के लिए एक आसान तरीका था सोच रहा था। उदाहरण के लिए, अगर मैं कुछ list
कंटेनर वस्तु है, एक तार्किक समारोहC++ वर्ग समारोह उपनाम
int list::length() { return len; }
होगा लेकिन एक तार्किक उर्फ कि प्रोग्रामर का उपयोग कर सकते
int list::size() { return len; }
हो सकता है तो, बजाय अपनी पूरी के साथ दोनों कार्यों लिखने की शरीर, वहाँ list::size()
list::length()
ऐसी है कि वह एक नकली जब संकलित नहीं है के उपनाम के बनाने के लिए किसी भी तरह से है, बल्कि एक ही समारोह का संदर्भ?
मैंने पढ़ा है कि आप इसे #define
के साथ कर सकते हैं, लेकिन मैं अन्य कोड-नामों के साथ कहीं भी पूरी तरह से दायरे से बाहर भ्रम नहीं करना चाहता (यानी 'आकार' चर)।
मैंने यह भी कहा कि समारोह संकेत, इसे ठीक कर सकते हैं, लेकिन यह है कि वास्तव में एक उपनाम नहीं है (क्योंकि यह de-संदर्भित लागू करने के लिए है), और न ही कार्य कर सकते हैं संकेत दिए गए एक घोषणा दी जानी इसे करने के लिए एक भ्रामक हेल्प-लाइन दे रही है पढ़ उपयोगकर्ता (मुझे लगता है), साथ ही भ्रम अगर मुझे किसी अन्य ऑब्जेक्ट के अंदर अपना कोड घोंसला करने की ज़रूरत है (मुझे दायरे को समायोजित करना होगा)।
inline int list::length() { return len; }
inline int list::size() { return length(); }
या, ग के लिए किसी भी सख्त 'उर्फ' वाक्य रचना ++ है:
मेरे अनुमान से एक, निम्नलिखित सबसे अनुकूलन compilers द्वारा एक सीधा समारोह उपनाम के रूप में ले जाया जाएगा है? (मुझे कोई नहीं मिला - यकीन नहीं था)
तो फिर, ऐसा करने का सबसे प्रभावी तरीका क्या होगा?
संपादित करें: मैंने केवल प्रश्न को लपेटने के लिए उत्तर स्वीकार कर लिया है, क्योंकि यह केवल मेरी जिज्ञासा है। अच्छी जानकारी वाला कोई भी व्यक्ति, कृपया टिप्पणी या उत्तर जोड़ें, और मैं अपना जवाब भी बदल सकता हूं।
एलियासिंग आमतौर पर संदर्भ है, जो संकेत की तरह काम करते हैं और अपसंदर्भन के लिए की जरूरत को जोड़ने के द्वारा किया जाता है। – imreal
यदि आपका सही कोड है तो आपके अंतिम कोड को किसी भी आधुनिक कंपाइलर द्वारा दोनों कार्यों के लिए एक ही असेंबली का उत्पादन करना चाहिए। – chris
अच्छा सवाल। मुझे लगता है कि इसे डिफ़ॉल्ट और हटाए गए कार्यों की अनुमति देकर 'सी ++ 11' में लिया गया था। यदि 'int foo() = delete' ठीक है, तो क्यों नहीं लिखा है कि int intoo() = int foo_default() 'ठीक से ठीक क्यों नहीं हो सकता है? शायद अगले मानक में :) जहां तक मुझे पता है कि वर्तमान में शरीर में अन्य func का संदर्भ देने से बेहतर तरीका नहीं है। – SomeWittyUsername