其實,每次給一個string對象分配的空間都是它原來對象所占空間的兩倍义郑,因為如果不這樣做蝶柿,一旦原對象增長,就必須在開辟一塊新空間把原對象所有內(nèi)容都copy過去非驮,再把新增加的內(nèi)容也放到里面去交汤。而一般來講string給一個空對象分配的初始空間是15,此后如果string對象增加了增長后的空間都是15*2^n劫笙。如下圖所示:
String類其實是模版類的實例化芙扎,它的模版類原型如下所示:
我們用的string就是第一個實例化類,可以看出其實char_traits和allocator也是模版類填大,所以實際上整個模版類的類型參數(shù)僅僅是chatT而已戒洼。