传递参数时C++中"small object"的定义

Definition of "small object" in C++ when passing arguments

本文关键字:small object 定义 参数 C++      更新时间:2023-10-16

在新的《c++编程语言》一书中(可能在以前的版本中),Bjarne Stroustrup建议:

  1. 对小对象使用按值传递
  2. 使用pass-by-const-reference传递不需要修改的大值
当涉及到参数传递时,小对象是否有一个共同接受的定义?例如,很明显,任何小于地址大小的对象都是小对象,但是那些比地址大小大2、3、4倍的对象呢?它们被认为是小的,应该按值传递吗?

作为工作的示例代码:

struct Vector {float x, y, z;};

我应该更喜欢:

void do_something_with_vector(Vector v){...}

或:

void do_something_with_vector(const Vector& v){...}

小对象是指大小等于或小于指针的对象。如果你传递一些更大的东西,比如你的例子中的Vector结构,那么它将被复制,这只是一个浪费:-)

相关文章: