所以我是一个相当有经验的 C 程序员,经常用 C++ 编程。语言有一些微妙之处,我从来没有自信过。例如,传递参数的最佳方法。
例如,假设我有一个名为 Object 的黑盒类(据我们所知,它可能有很多成员变量)和一个函数 fn,它以 Object 实例的向量作为其参数。在我看来,有四种基本方法可以通过:
void fn(vector<Object> vec);
void fn(vector<Object*> vec);
void fn(vector<Object> *vec);
void fn(vector<Object> &vec);
当然,我们也可以将这些功能结合起来。
我想确保我有这个直:
方法 1 将复制向量类,包括向量中每个 Object 实例的副本。这可能是一个巨大的过载,因此很糟糕。
(这个我不太确定)方法 2 将复制 vec 的所有方法变量,但它只会复制每个 Object 实例的地址。我对向量类中包含的内容知之甚少,无法知道这是否可取。
方法 3 和 4 相当简单且彼此相似,并且引入了最小的开销。
这一切都正确吗?记住我们对 Object 类一无所知,哪种方法是首选方法?