static初始化賦值為常量和賦值為函式呼叫

2021-08-31 17:33:59 字數 450 閱讀 7005

函式呼叫是在程式執行過程中才執行的,而static初始化右邊的值,必須是在編譯的時候就能確定.即如果給乙個常量即靜態初始化 static nsstring *str = @「123」;是可以的,因為static是靜態初始化,

但是 如果初始化是動態呼叫函式的 static nsstring *str = [nsstring stringwithformat:@「123」];不能這樣直接寫,

可以初始化給乙個nil,程式執行過程中再給它賦值

static nsstring *str = nil;

static dispatch_once_t oncetoken;

dispatch_once(&oncetoken, ^);

這樣保證str永遠只初始化一次

關於初始化和賦值

class test private char ptr pubic 若test test1 hello 則呼叫的是建構函式 若test test2 test1 則呼叫的是拷貝建構函式 若test test2 test1 則呼叫的是拷貝建構函式 若test test2 test2 test1 則呼叫的...

static 型別初始化

在初始化時,先初始化static型別變數,再初始化普通變數,再初始化建構函式。如下程式 class a void f int i class b void f2 int i static a a2 new a 2 class c void f3 int i static a a5 new a 5 p...

初始化 賦值 拷貝

折騰我挺長一段時間,基本挺明白了,先來個區別說明 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值 於另乙個已存在的物件。編譯器會區別這兩種情況,賦值的時候呼叫過載的賦值運算子,初始化的時候呼叫拷貝建構函式。如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的。這個預設...