運行結(jié)果: 請輸入一個整數(shù)和一個字符: 4 G Node constructor is running... Linklist constructor is running... Node constructor is running... Node constructor is running... Node constructor is running... After Insert 4 G 3 F 2 B 1 C After Delete 4 G 3 F 1 C Linklist cloner running... This is Linklist b 4 G 3 F 1 C After Destroy 4 G 根據(jù)程序運行的結(jié)果,我們發(fā)現(xiàn)輸出鏈表b的內(nèi)容的確和鏈表a一樣了,并且我們可以得到三個結(jié)論: (1) 拷貝構(gòu)造函數(shù)可以讀出相同類對象的私有成員數(shù)據(jù); (2) 拷貝構(gòu)造函數(shù)的實質(zhì)是把參數(shù)的成員數(shù)據(jù)一一復制到新的對象中; (3) 拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù)的一種重載。
運行結(jié)果: 請輸入一個整數(shù)和一個字符: 4 G Node constructor is running... Linklist constructor is running... Node constructor is running... Node constructor is running... Node constructor is running... After Insert 4 G 3 F 2 B 1 C After Delete 4 G 3 F 1 C Linklist Deep cloner running... Node constructor is running... Node constructor is running... This is Linklist b 4 G 3 F 1 C After Destroy 4 G This is Linklist b 4 G 3 F 1 C 我們看到,現(xiàn)在即使運行a.Destroy()之后,鏈表b里面的數(shù)據(jù)仍然能夠正常顯示。這是因為深拷貝構(gòu)造函數(shù)是真正意義上的復制了鏈表a,并且使得鏈表a和鏈表b各自獨立,互不干擾。這才是自定義拷貝構(gòu)造函數(shù)存在的重要意義。