我们一般很喜欢把函数的参数定义为 const&, 这样即能传引用减少内存拷贝, 也能限定参数为 const 类型不可修改, 似乎很美好. 但是, 如果把对象的属性传给函数, 而对象又被删除时, 就会出错.
struct C
{
std::string id;
};
class S
{
C *c = NULL;
void f1(){
c = new C();
c->id = "a";
f2(c->id);
}
void f2(const std::string &id){
delete ……