gpt4 book ai didi

c++ - 内联函数和复制构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:12 25 4
gpt4 key购买 nike

这两个内联函数有什么区别?

inline void setValue(ClassName& value);

对比

inline void setValue(ClassName value);

基本上,编译器将如何处理这两种情况 g++/MSComp?

类似的情况,但有原语:

inline void setValue(const float value);
inline void setValue(float& value);
inline void setValue(float value);

最佳答案

inline 主要是链接器指令,因此在这里 w.r.t 没有任何区别。参数通过。安全地忽略它

void setValue(ClassName& value);

通过引用获取传入的对象,从而编辑实际传入的对象,而

void setValue(ClassName value);

按值获取它,因此使用原始对象的拷贝。对此本地 变量所做的更改对调用者的传入参数无关紧要。

按引用传递和按值传递的含义对于内置(原始)类型也是一样的。这两个变体 void setValue(float value);void setValue(const float value); 对调用者来说意义不大,因为你无论如何都要复制值,因为调用者 const 并不重要,尽管在函数的实现站点上,它不允许对复制的本地 value 进行意外编辑,因为它是 const功能。

关于c++ - 内联函数和复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210230/

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