होनेI- से .member कम कुशल> सदस्य
struct Person {
string name;
};
Person* p = ...
मान लें कि कोई ऑपरेटरों अतिभारित रहे हैं (* i)।
कौन सा अधिक कुशल (यदि कोई है)?
(*p).name
बनामp->name
मेरे सिर के पीछे में कहीं न कहीं मैं, कुछ बज घंटी सुना है कि *
भिन्नता ऑपरेटर एक वस्तु की अस्थायी प्रतिलिपि बना सकते हैं; क्या ये सच है?
इस सवाल की पृष्ठभूमि इस तरह के मामलों रहे हैं:
Person& Person::someFunction(){
...
return *this;
}
और मुझे आश्चर्य है कि करने के लिए, (शुरू किया, तो Person*
के परिणाम और अंतिम पंक्ति को बदलने बस return this
कोई फर्क होगा प्रदर्शन में)?
इस बिंदु पर आपको पठनीयता के बारे में अधिक चिंता करनी चाहिए, और चूंकि '->' अधिक सामान्य वाक्य रचनात्मक चीनी है, '(* i) .m' कई स्थानों पर फहरा हुआ है। केवल अगर कोई प्रोफाइलिंग दिखाता है कि इससे संबंधित कोई समस्या हो सकती है तो आपको इसकी दक्षता के बारे में चिंता करना शुरू कर देना चाहिए। – PlasmaHH
मैं उम्मीद करता हूं कि संकलक बिल्कुल उसी परिणाम का उत्पादन करे। आप इसे स्वयं जवाब दे सकते हैं, दोनों कोड को असेंबलर में संकलित कर सकते हैं और उत्पादित कोड की जांच कर सकते हैं। – bluehallu
मैंने इस सवाल से पूछा कि * पृष्ठभूमि * मैंने वर्णित किया है - कई मूल ऑपरेटर आमतौर पर स्वयं का संदर्भ देते हैं, और मैं अक्सर उन्हें '* यह' वापस लौटता हूं; –