當系統載入類或建立該類的例項時,系統自動為成員變數分配記憶體空間,設定預設值,然後,為成員變數指定初始值。但是,如下所示:
class test{
int a = b+1;
int b =1;
}提示錯誤!
執行順序不是大致可以認為是這樣麼:
int a = 0;
int b = 0;
a = b+1;
b = 1;
(感覺大致就是這樣子吧)
如果是這樣的話上邊當int a = b+1時b應該已經有預設值了,但為什麼報錯啊?
表達有點亂,求大神解釋!!!
建立類的例項時,系統自動分配記憶體空間,設定預設值,然後,為成員變數指定初始化(如果有的話)。
int a;
}
像這樣,在程式中例項化並輸出會輸出 a 為 0,因為預設值的問題,
如果像這樣 class test{
int a =1;
因為有初始化所以輸出為a 為1。
總之當成員變數分配記憶體後,應該是有預設值的,順序應該是:
先
int b;(這裡應該都在分配記憶體時指定預設值為0了)
然後 再執行初始化:
就這樣子吧比如下面程式是對的
class{
{
a = 1;
int a =2;
當系統載入類或建立該類的例項時,系統自動為成員變數分配記憶體空間,設定預設值,然後,為成員變數指定初始值。但是,如下所示:
class test{
int a = b+1;
int b =1;
}提示錯誤!
執行順序不是大致可以認為是這樣麼:
int a = 0;
int b = 0;
a = b+1;
b = 1;
(感覺大致就是這樣子吧)
如果是這樣的話上邊當int a = b+1時b應該已經有預設值了,但為什麼報錯啊?
表達有點亂,求大神解釋!!!
建立類的例項時,系統自動分配記憶體空間,設定預設值,然後,為成員變數指定初始化(如果有的話)。
class test{
int a;
}
像這樣,在程式中例項化並輸出會輸出 a 為 0,因為預設值的問題,
如果像這樣 class test{
int a =1;
}
因為有初始化所以輸出為a 為1。
總之當成員變數分配記憶體後,應該是有預設值的,順序應該是:
先
int a;
int b;(這裡應該都在分配記憶體時指定預設值為0了)
然後 再執行初始化:
a = b+1;
b = 1;
就這樣子吧比如下面程式是對的
class{
{
a = 1;
}
int a =2;
}