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对象并没有进行数据的分配 其余的和()赋值应该是一样的步骤
因此 我认为= 与()初始化具有近似的效率 至于说到用()初始化比较好 目前还没有比较明显证据
个人理解有限 可能有错误

浙公网安备 33010602011771号