為什么當(dāng)coordinate構(gòu)造函數(shù)含有參數(shù)的時(shí)候,line只能用初始列表的方式
而不能,line::line(int x1,int y1,int x2,int y2)
{m_coorA.getx(x1); ? ?m_coorAgety(y1); ? ?m_coorB.getx(x2); ? ?m_coorBgety(y2);
}
而不能,line::line(int x1,int y1,int x2,int y2)
{m_coorA.getx(x1); ? ?m_coorAgety(y1); ? ?m_coorB.getx(x2); ? ?m_coorBgety(y2);
}
2016-04-21
舉報(bào)
2017-08-29
因?yàn)閷?shí)例化Line時(shí),必須先實(shí)例化m_coorA和m_coorB,但這兩個(gè)對(duì)象又無(wú)默認(rèn)構(gòu)造函數(shù),所以要用初始化列表??吹揭粋€(gè)別的評(píng)論說的,不是原創(chuàng),但覺得很簡(jiǎn)潔。
2016-08-01
咦。修改了之后效果更奇怪了,c++真是一門奇特的語(yǔ)言..
2016-08-01
不過這樣寫的話,對(duì)象之間會(huì)重名,但是為什么沒有報(bào)錯(cuò)呢?
2016-08-01
因?yàn)槌跏蓟斜頃?huì)比構(gòu)造函數(shù)先執(zhí)行,再因?yàn)镃oordinate是Line的對(duì)象成員,會(huì)優(yōu)先于Line執(zhí)行構(gòu)造函數(shù),所以如果不把Coordinate的那兩個(gè)對(duì)象放在初始化列表中進(jìn)行初始化,將會(huì)導(dǎo)致Coordinnate的對(duì)象使用默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化,然后你又沒有寫默認(rèn)的構(gòu)造函數(shù),所以會(huì)報(bào)錯(cuò),不過如果你寫了默認(rèn)構(gòu)造函數(shù),會(huì)導(dǎo)致多出來兩個(gè)對(duì)象。好像很復(fù)雜的樣子,你看得懂就看吧,看不懂算了,我語(yǔ)文學(xué)的不好
2016-04-21
coordinate 構(gòu)造函數(shù)含有參數(shù)且只能使用初始化列表的時(shí)候是需要初始化的變量帶有const的時(shí)候。初始化const變量只能通過初始化列表的方式,不然會(huì)出錯(cuò)。?
我也是初學(xué)者,若有錯(cuò)誤請(qǐng)指出。