gpt4 book ai didi

c++ - 函数返回中const T&和T的区别

转载 作者:行者123 更新时间:2023-11-30 04:06:11 25 4
gpt4 key购买 nike

我对函数返回中的 const T& 和 T 感到困惑。

比如我有一个A类:

class A {
private:
vector<T> my_vector_;
public:
T fun1() {
return my_vector_.at(0);
}
const T& fun2() {
return my_vector_.at(0);
}
}

然后,

Class A a;
T b = a.fun1();
const T& c = a.fun1();
const T& d = a.fun2();

这三种情况有什么区别?谢谢。

最佳答案

T b = a.fun1();

此处,b 持有 vector 位置 0 处元素的拷贝。也就是说,对前者所做的任何修改都不会影响后者。

const T& c = a.fun1();

fun1 按值返回了一个对象,并且您使用了对 const 的引用来引用它。考虑到这一点,该物体确实是“漂浮在太空中”。它的生命周期将绑定(bind)到 c 的生命周期,但仍然不是 vector 的原始拷贝。

const T& d = a.fun2();

fun2 将对 const 的引用返回到 vector 内部的元素,并且您将 d 绑定(bind)到它。从现在开始,后者是前者的别名。

关于c++ - 函数返回中const T&和T的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996042/

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