學習參考鏈接【他人的】: http://www.cnblogs.com/solidblog/p/3381628.html
1,看到別人寫explict 用法,就使用兩個分別進行了比較
// code 1class ss { public: ss(int n) { m_iCounter = n; }; ~ss() { std::cout << m_iCounter << std::endl; std::getchar(); }; PRivate: int m_iCounter;};// code 2class ss_explicit { public: explicit ss_explicit(int n) { m_iCounter = n; }; ~ss_explicit() { std::cout << m_iCounter << std::endl; std::getchar(); }; private: int m_iCounter;};//主函數(shù)
int main(void){ ss tp1('a'); ------ok ss tp2(15); ------ok ss tp3 = 12; ------ok ss tp4 = 'a'; ------ok ss_explicit tp1('a'); ------ok ss_explicit tp2(15); ------ok // 1, 隱式轉(zhuǎn)換 // 2, 深,淺拷貝函數(shù) //ss_explicit tp3 = 12; ------false //ss_explicit tp4 = 'a'; ------false return 0;}**然后我就開始了進一步的猜測**1,我認為隱式轉(zhuǎn)換應該分成了兩個可能性: 參數(shù)轉(zhuǎn)換,還是說調(diào)用淺拷貝函數(shù)這里進行了參數(shù)轉(zhuǎn)換,通過 ss 和 ss_explicit 的前兩組數(shù)據(jù)進行對比,發(fā)現(xiàn)就算是用了explicit 修飾符,但是依舊可以進行構(gòu)造函數(shù)參數(shù)的轉(zhuǎn)換。說明: 隱式轉(zhuǎn)換指的是調(diào)用默認的拷貝構(gòu)造函數(shù)進行轉(zhuǎn)換。那么說到了這,讓我疑惑的就是,使用淺拷貝會產(chǎn)生多大的問題?會造成什么不良影響?【那么這里留個懸念,請教下身邊的大神先】2,就是回顧一下深,淺拷貝函數(shù)的區(qū)別,如果復制的對象在構(gòu)造函數(shù)中使用申請了對內(nèi)存,淺拷貝函數(shù)是只會復制指針指向的地址,而不是自己重新申請一塊內(nèi)存空間。新聞熱點
疑難解答
圖片精選