c++ - 按值传递

标签 c++ this

愚蠢的问题:按值传递它的最佳方式是什么?

背景:让我们使用汽车和汽车选项。我曾经有构造函数,例如 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/

相关文章:

c++ - nullptr 不能在 valarray 中使用

javascript 对象原型(prototype) this 引用

c++ - 重载 new 返回的值与 this 不匹配

c++ - 模板友元函数无法访问私有(private)成员

python - 在 C++ 中,不应该有一个类似于 'this' 指针的名称不可知的类指针供成员函数引用吗?

javascript - 同时使用 $(this) 和 addClass/removeClass 显示/隐藏底部导航栏的内容

javascript - 匿名闭包函数内的“this”

C++ - 模板化均匀分布?

c++ - 使用 constexpr 进行全局和局部变量初始化的区别背后的基本原理

c++ - Visual C++ Studio 2010 无故显示生成错误