注意函數的執行順序,析構函數是最后才調用的,調用時會執行內部釋放對象成員指針的語句,所以,成員對象指針會先進行析構釋放,然后才是coordinate的對象
寧外請注意:
對象成員如果無默認構造函數則必須在當前對象構造函數后使用初始化列表進行初始化,此時構造函數順序為對象成員的構造函數coordinate,當前對象的構造函數line。
對象成員指針,則應該在當前對象的構造函數中調用本身的構造函數初始化,此時構造函數調用順序為當前對象的構造函數line,對象成員指針的構造函數coordinate。
寧外請注意:
對象成員如果無默認構造函數則必須在當前對象構造函數后使用初始化列表進行初始化,此時構造函數順序為對象成員的構造函數coordinate,當前對象的構造函數line。
對象成員指針,則應該在當前對象的構造函數中調用本身的構造函數初始化,此時構造函數調用順序為當前對象的構造函數line,對象成員指針的構造函數coordinate。
2019-09-01
最新回答 / 慕沐45833
在Line.h中,Coordinate m_coorA;Coordinate m_coorB; 僅僅是申明這個line類有這個成員,并沒有實例化,所以并沒執行構造函數,只有實例化時才執行構造
2019-08-31
最贊回答 / 慕運維3124395
所有對象成員沒有默認構造函數就都得使用初始化列表進行初始化,因為沒有默認構造函數就沒有辦法初始化賦值。當你設置了默認構造函數之后,系統在你初始化對象的時候就會使用你設置的默認構造函數,而不會使用系統自己定義的。默認構造函數的要求是無參數,或者參數全為默認值。
2019-08-18
已采納回答 / 慕運維3124395
1.2均不合法,3存在語法錯誤數組符號代表進行一次訪問,1中p[1]代表訪問到了第二個對象,此時再用->再次訪問就不合理了;p中存放的地址是第一個對象的,p+1代表第二個對象的地址,此時p+1還未進行訪問操作,直接使用.取成員依舊是不合理的;同理p+1代表一個指針存放第二個對象的地址,可以進行訪問拿到m_x這個成員,但是p+1應該加上小括號,因為->的優先級高于+;
2019-08-18
Coordinate的指針原型不是Coordinate *this;而是Coordinate *const this;
2019-08-15
已采納回答 / AlexPan0610
視頻中的代碼是 cout << "arr.m_iCount" << arr.getCount() << endl;雖然提示信息寫的是"arr.m_iCount",實際訪問的方法是arr.getCount()。
2019-08-06
最新回答 / 慕碼人8215885
m_coorA是Coordinate的對象,而line公共繼承了Coordinate這個類,所以line類的成員函數setA()可以訪問基類Coordinate的成員函數setX(),setY()
2019-07-31
最新回答 / weixin_慕UI0048803
父類下面有很多子類,需要使用相同代碼調用不同子類的方法,此時就會遇到別人操作自己的內存,建議了解以下設計模式,對這個視頻將會更好理解
2019-07-28