學習參考鏈接【他人的】: 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;};//主函數
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, 隱式轉換 // 2, 深,淺拷貝函數 //ss_explicit tp3 = 12; ------false //ss_explicit tp4 = 'a'; ------false return 0;}**然后我就開始了進一步的猜測**1,我認為隱式轉換應該分成了兩個可能性: 參數轉換,還是說調用淺拷貝函數這里進行了參數轉換,通過 ss 和 ss_explicit 的前兩組數據進行對比,發現就算是用了explicit 修飾符,但是依舊可以進行構造函數參數的轉換。說明: 隱式轉換指的是調用默認的拷貝構造函數進行轉換。那么說到了這,讓我疑惑的就是,使用淺拷貝會產生多大的問題?會造成什么不良影響?【那么這里留個懸念,請教下身邊的大神先】2,就是回顧一下深,淺拷貝函數的區別,如果復制的對象在構造函數中使用申請了對內存,淺拷貝函數是只會復制指針指向的地址,而不是自己重新申請一塊內存空間。新聞熱點
疑難解答
圖片精選