gpt4 book ai didi

c++ - 常量构造函数参数应该通过引用还是值传递?

转载 作者:行者123 更新时间:2023-11-30 02:10:24 35 4
gpt4 key购买 nike

当将常量值传递给对象的构造函数时,它们应该通过引用还是值传递?
构造函数和初始值设定项的所有教科书示例都按值传递,但这对我来说似乎效率低下。

如果按值传递并且参数立即用于初始化成员变量,是否会生成两个拷贝?这是编译器会自动处理的事情吗?

class Point {
public:
int x;
int y;
Point(const int _x, const int _y) : x(_x), y(_y) {}
};

int main() {
const int a = 1, b = 2;
Point p(a,b);
Point q(3,5);

cout << p.x << "," << p.y << endl;
cout << q.x << "," << q.y << endl;
}

对比

class Point {
public:
int x;
int y;
Point(const int& _x, const int& _y) : x(_x), y(_y) {}
};

两者编译并做同样的事情,但哪个是正确的?

最佳答案

对于按值传递的简单类型来说很好,您只是复制几个字节的数据。但对于更复杂的类型,如 vector 和字符串,最好传递一个 const 引用。如果不需要拷贝,复制大字符串或 vector 是一种浪费。

关于c++ - 常量构造函数参数应该通过引用还是值传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631314/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com