第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大佬,請問一下關(guān)于user2 = user1;//程序為何沒出現(xiàn)錯誤? =函數(shù)內(nèi)注釋?

求大佬,請問一下關(guān)于user2 = user1;//程序為何沒出現(xiàn)錯誤? =函數(shù)內(nèi)注釋?

慕斯王 2021-04-11 15:11:35
#include <iostream>#include <cstring>using namespace std;class User {public:User (const char* pszName, int nAge) {m_pszName = new char[strlen(pszName) + 1];strcpy (m_pszName, pszName);m_nAge = nAge;}User (const User& user) {cout << "Here is copy constructor" << endl;m_pszName = new char[strlen(user.m_pszName) + 1];strcpy (m_pszName, user.m_pszName);m_nAge = user.m_nAge;}User& operator= (const User& user) {cout << "Here is copy assignment" << endl;if (&user != this) {if (m_pszName) {//delete[] m_pszName;\\為什么去掉也沒有錯誤?//m_pszName = NULL;}m_pszName = new char[strlen(user.m_pszName) + 1];strcpy (m_pszName, user.m_pszName);m_nAge = user.m_nAge;}return *this;}~User (void) {delete[] m_pszName;}void print (void) {cout << "My name is " << m_pszName << ". I'm " << m_nAge << " years old." << endl;}private:char* m_pszName;int m_nAge;};int main (){User user1 ("Zaphod", 42);User user2 ("Tom", 38);user2 = user1;//程序為何沒出現(xiàn)錯誤?user2.print ();}
查看完整描述

2 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗 獲得超18個贊

1、內(nèi)存沒有釋放并不會導(dǎo)致程序編譯錯或執(zhí)行錯,只會導(dǎo)致程序占用的內(nèi)存不能釋放,因此不會錯,但在大型程序中反復(fù)執(zhí)行后就會導(dǎo)致內(nèi)存被大量占用。這就是常說的內(nèi)存泄露。
2、由于USER1和USER2實際上是USER類型實例的指針,相互賦值被你的重定向等號操作接管,由于上面第1條的原因,就算你該函數(shù)內(nèi)不會再分配內(nèi)存,程序也不會有程序編譯或執(zhí)行錯。

查看完整回答
反對 回復(fù) 2021-04-18
?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗 獲得超4個贊

當(dāng)然不會出錯,因為之后的m_pszName = new char[strlen(user.m_pszName) + 1];又申請了一塊新的內(nèi)存用來存數(shù)據(jù)了,不會發(fā)生內(nèi)存讀寫錯誤。
當(dāng)然,m_pszName原來指向的那塊內(nèi)存就成了內(nèi)存碎片了。

查看完整回答
反對 回復(fù) 2021-04-18
  • 2 回答
  • 0 關(guān)注
  • 338 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號