यदि आपके पास कोई तरीका है और आप संकलक को एक संकेत देना चाहते हैं कि इसे इनलाइन करना एक अच्छा विचार है, तो आपके पास वर्तमान में दो समाधान हैं।इनलाइन विधि: अंदर बनाम कक्षा परिभाषा
class Vector {
private:
double* data_;
double* size_;
double* capacity_;
public:
inline double& operator[](int k);
...
}
double& Vector::operator[](int k) {
return data_[k];
}
:
class Vector {
private:
double* data_;
double* size_;
double* capacity_;
public:
double& operator[](int k) {
return data_[k];
}
...
}
के रूप में इस विधि पठनीयता को कम कर सकते हैं, एक और समाधान inline
कीवर्ड का उपयोग करें और कक्षा से बाहर विधि को परिभाषित करने के लिए है: पहले एक है जब आप अपने वर्ग की घोषणा पद्धतियां निर्धारित करने के लिए है
यह कोड को और अधिक पठनीय बनाता है (कम से कम मैं इसे पसंद करता हूं)। मेरे STL कार्यान्वयन को पढ़कर, मैंने पाया कि वे दोनों के मिश्रण का उपयोग करते हैं। कुछ विधियों (जो मुझे लगता है कि वास्तव में इनलाइन किया जाना चाहिए) कक्षा में परिभाषित किया गया है, और अन्य को इनलाइन कीवर्ड के साथ कक्षा से बाहर परिभाषित किया गया है। फ़ाइल कक्षा की एक टिप्पणी की घोषणा के साथ भी शुरू होता है।
तो मेरा प्रश्न निम्न है। वर्तमान कंपाइलर्स करें (मैं GCC, Clang, इंटेल, और Visual Studio) के बारे में सोच रहा हूं) इनलाइन कीवर्ड के साथ कक्षा से घोषित सदस्य फ़ंक्शन की तुलना में कक्षा के अंदर घोषित सदस्य फ़ंक्शन को रेखांकित करने की अधिक संभावना है?
टिप्पणी: यह प्रश्न When should I write the keyword 'inline' for a function/method? का डुप्लिकेट नहीं है क्योंकि मेरा प्रश्न कंपाइलर कार्यान्वयन के बारे में है। यह कहने के इन दो तरीकों से करें कि आप चाहते हैं कि उन कार्यों को रेखांकित किया जाए। एसटीएल लिखा गया तरीका बताता है कि वे नहीं हैं।
http://stackoverflow.com/questions/1759300/when-should-i-write-the-keyword-inline-for-a-function-method – dhke