說Pokemon
是一類。考慮這個片段:「丟失」堆棧對象會發生什麼?
Pokemon Eve(4,3); //call to constructor, creating first object on the stack
Eve=Pokemon(3,5); //call to constructor again, creating a second object on the stack
兩個對象都在堆棧上創建。第二行執行後,第一個對象(帶有參數4,3)不能再被訪問。它會發生什麼?用什麼術語來描述這個過程?垃圾收集?
我不會說分配的空間是「簡單覆蓋」的。 C++賦值運算符在覆蓋任何內容之前可能會做很多事情。根據'operator =()'的實現,它可能不會覆蓋任何東西! –
這正是默認實現所發生的情況,並且可以說,這就是任何理智的重寫應該做的事情,就分配語義而言。誠然,這個問題提供了一個很好的機會,可以爲C++中的特殊操作符插入深入的咆哮,但我非常懷疑OP要求這樣做。 – shinobi
非常真實,這就是爲什麼我沒有downvote。這完全取決於OP的'口袋妖怪'類中發生了什麼。重寫'operator =()'的最明顯的原因是做指針的深層副本,它不僅僅是「簡單地覆蓋」類內容。我的評論更多的是指出,我們不一定會對OP的「口袋妖怪」課程做出假設,並做出一攬子聲明。 –