जैसा कि मैं अस्थायी समझता हूं, निम्नलिखित कोड काम करना चाहिए, लेकिन ऐसा नहीं है।सी ++ अस्थायी - "शुद्ध वर्चुअल विधि"
struct base
{
virtual~base() {}
virtual void virt()const=0;
};
struct derived:public base
{
virtual void virt()const {}
};
const base& foo() {return derived();}
int main()
{
foo().virt();
return 0;
}
virt के लिए कॉल() एक "शुद्ध आभासी समारोह कहा जाता है" त्रुटि दिखाता है। वह क्यों है, और मुझे क्या करना चाहिए?
बिल्कुल, क्योंकि आभासी तालिका भी साफ हो जाएगी ... इसलिए संदेश। –
@DougT .: "अपरिभाषित व्यवहार" में कोई "कारण" नहीं है। (इसके अलावा, आभासी * टेबल * कभी भी "साफ नहीं हो जाता"।) –
लेकिन पूर्ण अभिव्यक्ति के अंत में अस्थायी वस्तु को नष्ट नहीं किया जाना चाहिए, जो बाद में() वापस आ गया है? – Dave