其实我想只要能看到这篇博客的朋友,又是学过C/C++的都应该知道,如果一个对象需要作为函数调用的一个参数,同时对象分配的内存又非常大的时候,应该使用const T&来作为参数。
虽然知道这一点,但是我还是经常会在传递string参数的时候,直接不使用引用,今天仔细看了一下string的写时copy,突然想到,大家看到string就要求传递引用会不会只是一种惯性驱使呢,string的copy真的会把分配的内存全部copy一遍?
我们其实做一个简单的实验就知道了,代码如下:
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
void test1(string c)
{
printf("c[%u]\n",c.c_str());
}
void test2(const string& d)
{
printf("d[%u]\n",d.c_str());
}
void test3(const string e)
{
printf ...