微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 从函数返回本地对象

这是从函数返回对象的正确方法吗?
Car getCar(string model,int year) {
   Car c(model,year);
   return c;
}

void displayCar(Car &car) {
   cout << car.getModel() << "," << car.getYear() << endl;
}

displayCar(getCar("Honda",1999));

我得到一个错误,“采取临时地址”.我应该用这种方法

Car &getCar(string model,year);
   return c;
}

解决方法

getCar返回一个Car值,这是正确的.

因为displayCar需要一个Car& amp;,所以不能把这个临时对象的返回值传递给displayCar.您不能将临时绑定到非常量引用.您应该更改displayCar以获取const引用:

void displayCar(const Car& car) { }

或者,您可以将临时存储在本地变量中:

Car c = getCar("Honda",1999);
displayCar(c);

但是,由于它不会修改对象,因此最好让displayCar引用一个const引用.

不要返回对本地Car变量的引用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐