坑一:
typedef struct _st
{
string m1;
int m2;
}st;
st *test = (st *)malloc(sizeof(st));
st->m1 = "hello";
調試這段代碼,你會發現最后一句報段錯誤。為什么呢?string本質是個類,而malloc不知道要調用string的構造函數去實例化m1,結果導致m1這個對象實際不存在,去用它當然錯誤。解決這一問題的方法是使用new來創建結構體:
st *test = new st; 或 st *test =new st();
new會懂得調用string的構造函數去實例m1。話說為什么能用new來創建結構體呢?因為在c++中,結構體就是特殊的類。
新聞熱點
疑難解答