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变量的引用.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...