sting初始化探讨

记得同学都说string初始化的时候 如果使用()来初始化比用=初始化效率高,以前一直觉得是这样的 这次看c++primer 我决定做一下分析

测试代码为:

string s2;
cout << s2.capacity() << '\t' << s2.size() << endl;
s2 = "abc”;

cout << s2.capacity() << '\t' << s2.size() << endl;

 

这段代码输出的结果显示 当我们定义一个string对象的时候 它的大小是0 也就是说没有给string分配内存空间 当我们进行赋值之后 string对象的大小变成3  capacity也是3

 

同样的 我们另一段代码:

char no_null[] = {'a','b','\0'};

string s1(no_null);

cout << s1.capacity() << '\t' << s1.size() << endl; //if no_null is not end  the size will be 5
cout << s1 << endl;

 

这段代码输出结果显示 s1的size是2 capacity也是2  也就是说 这个过程中 需要给s1分配2个字符串的空间

 

通过上述代码结果我们发现 =号赋值的时候 定义的string对象并没有进行数据的分配 其余的和()赋值应该是一样的步骤

因此 我认为= 与()初始化具有近似的效率 至于说到用()初始化比较好 目前还没有比较明显证据

 

个人理解有限 可能有错误

posted @ 2012-03-11 20:18  Frozenxia  Views(243)  Comments(0)    收藏  举报