愚蠢的问题:按值传递它的最佳方式是什么?
背景:让我们使用汽车和汽车选项。我曾经有构造函数,例如 Ford(FordOptions)、Honda(HondaOptions)。所有汽车都派生自 Car,所有选项都派生自 CarOptions。我曾经有一个汽车工厂,它被传递一个指向 CarOption 的指针,检查类型,生产合适的汽车,然后返回一个指向通用 Car 的指针。
我现在更改了它,以便 CarOption 有一个返回汽车的虚拟 ProduceCar,并且每个单独的汽车选项都实现其特定的生产。因此,当我获得指向汽车选项的通用指针时,我只需调用 CarOptions.ProduceCar 并获得指向汽车的通用指针。
一切都很好,除了在 FordOption.ProduceCar 的实现中,我需要将 FordOption 实例传递给 Ford 构造函数。我可以通过传递“this”并更改 Ford 的构造函数以接受指向 FordOptions 而不是 FordOptions 的指针来做到这一点。但是,我希望它按值或至少按引用获取 FordOptions,但很难做到这一点。
我打赌一个简单答案的长问题。谢谢。
最佳答案
您只需要取消引用 this
指针...并且根据调用的方法,您可以传递引用(如示例中所示)或按值传递
Ford::Ford(const FordOption &o) {}
Ford FordOption::produceCar() {
return Ford(*this); // <-- Dereference this
}
关于c++ - 按值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139543/