返回值为指针的函数怎么理解,返回指针值的函数是
返回值和指针返回-shell 909090-文章
值和指针的返回简介
嗯,这是常识。我说了快点。
c﹡c=get _ c();
这是指针返回。
C c=get_c():
这是价值回报。
返回指针的缺点是你要检查返回指针的有效性,返回指针是空的。此外,您需要手动管理指针释放。好处是避免了值复制,可以返回null值,也就是说返回NULL就没有值了。
引用返回最大的好处是变量的生命周期和作用域都是一样的,不需要管理释放问题。然而,缺点是巨大的复制开销。
get_c返回时,会返回一个对象。此对象是子函数作用域对象,当子函数退出时,此对象将无效。因此,当值被返回时,将导致复制。这种文案有两种可能。
1.复制结构
当返回值用于对象的声明时,复制构造函数将被触发。返回的对象将作为复制构造参数传递(通过引用传递),复制的对象就是生成的对象。
2.赋值运算符
也就是运算符=。当对声明的对象进行赋值时,就会发生这种情况。
当然,现代编译器已经优化了“为返回后的构造而在返回时构造”的情况,也就是通常所说的RVO优化。比如get_c中使用了return C(a,b);返回,实际上只是C:C(a,b)的调用,而不是C:C(const C c)的调用。