string 物件初始化

2021-05-06 11:55:39 字數 620 閱讀 3380

我在標頭檔案裡這樣宣告

wf_error writelog(log_level mlevel,module_code mmodule, string msg,string filename=null,int line_num = 0);

在windows下編譯、執行沒問題,但是linux下編譯可以通過,執行時出現下列錯誤

terminate   called   after   throwing   an   instance   of   'std::logic_error'  

what():     basic_string::_s_construct   null   not   valid 

實際上,不應該這樣宣告的,應該

wf_error writelog(log_level mlevel,module_code mmodule, string msg,string filename="",int line_num = 0);

這是別的blog裡看到的:

是在類初始化時用了類似這樣的東西  

clasa   a  

};  

這是不對的,string   不可以有null指標,若要只能寫成  

string   ="";

怎樣對string物件初始化?

1 預設初始化 string s s是乙個空串2 使用字串字面值初始化 string s1 hello world 拷貝初始化 string s2 hello world 直接初始化 注意 s1 s2的內容不包括 0 3 使用其他字串初始化 string s2 s1 拷貝初始化,s1是string類...

物件初始化

在oc中使用alloc後,會分配到一塊記憶體塊,同時這塊記憶體塊會被清零,所以初始化函式init是不需要再做置零的操作的。在oc中,應該在alloc後就呼叫初始化函式init,使用new可以達到這個效果,但new不是oc的風格。物件在init時,應該先使用其父類的init,然後再使用自己的init行...

物件初始化

我們知道當使用new關鍵字建立乙個物件的時候,會呼叫相應的建構函式對該物件進行初始化,那麼這個過程中到底都還有什麼事情呢?先看一段 當執行語句 student stu new student zhangsan 17 執行該語句的時候在記憶體中程式都做了什麼事情,讓我們一一枚舉出來 1 因為new用到...