陣列作為引數時,傳入基類首位址和子類首位址的區別

2021-05-24 11:14:20 字數 480 閱讀 6704

class a

;~a() {};

virtual void settest();

int m_ifirst;

};class b :public a

;~b() {};

virtual void settest();

int m_isecond;

};void wanmeitest(a* a, int icount)

}在呼叫的時候如果轉入的是

a a;

b b;

int c = sizeof(a);

c = sizeof(b);

a abase[2];

b* achild =  new b[5];

b* pp = achild + 1;

wanmeitest(achild, 5);

結果會崩潰,原因在於wanmeitest裡面的記憶體偏移是按照a的大小來的,除非裡面強轉成b型別的指標

陣列 物件分別作為函式引數時

一 物件作為函式的引數 物件也可以作為函式的引數傳遞給函式,其轉遞方法與傳遞其他型別的資料一樣,可採用值傳遞和位址傳遞兩種方法。值傳遞時是把物件的拷貝而不是本身傳遞給函式,函式中對引數物件的任何修改都不會影響呼叫該函式的物件本身 而位址傳遞時,呼叫該函式的物件與引數物件共用同乙個位址,所以,函式對引...

訪問URL時傳入另乙個URL作為引數

原文 這種情況下,d 4 這個引數會被當做是訪問 login.html 時的引數,而不是 device.html 的引數。解決辦法 對url 引數內容進行加碼,如下 後端獲取的時候再使用 unescape 進行解碼,就能拿到完整的路徑及引數了 but,對於已經發布版本的專案來說,不能修改後端 咋整?...

012 將類作為引數傳入函式來修改函式方法

將類作為引數傳入函式來修改 新增 覆蓋 類函式。若將乙個類作為引數傳入乙個函式,並在該函式中為該類新增乙個函式,並且該函式與該類下的某個函式同名,則新新增的函式將覆蓋原類中同名函式。將類 couter1 作為引數傳入 middlefunc 函式 midd.py from test.cinner im...