第1个回答 2012-03-31
会的!
假设有定义void fun(const string& s){}
那么当调用 fun("123");时, 会在栈中创建一个string的对象,并且用“123”初始化; 然后用这个对象做参数传给fun(); 最后在fun()返回后这个string对象析构。
第2个回答 2012-04-03
string 类型是经过优化的,当直接负值一个常量字符串的时候,他不会开辟空间而是将内部指针直接指向地址空间,只有在操作字符串的时候才会开辟空间,这样效率高。
第3个回答 2012-03-30
举个例子:
string name;
char a[10];
往a里放了一堆字符。
name = a;
这里就相当于将a传递给 赋值操作符(参数为const string &)
1、如果string类中没有重载参数是const char *的赋值操作符,
这个时候系统会调用参数是(const char *)的构造函数创建一个临时副本,然后将临时副本的内容赋值给name。
2、如果string类中有重载参数是const char *的赋值操作符,不会产生副本。本回答被提问者采纳