String String::operator+(const String&c_string){
String tmp;
tmp=*this;
strcat(tmp._string,c_string._string);
return tmp;
}
这是我的函数,我不太清楚到底局部声明的“对象”在函数外面利用引用是否存在,这里是不是把返回值写出String&好一点,String*又怎么样了?(不考虑外面怎么使用这个函数)
前面的问题我大概理解了,下面这种情况行不行了
还有个问题,A *func(){A *d=new A();return A;}这种行不行了?我看C++primer上有个这样的函数,但是我觉得如果按照 三六一十九 的解答,这种应该也是不行的?
c++返回引用的问题
第一个是保证了返回的类一定是存在的,否则有可能已经被析构了导致错误,第二个是提高了程序的效率,因为省去了复制的过程,这是因为函数返回后,系统产生一个匿名对象,并复制为返回的对象,之后你使用的都是这个匿名对象,
c++ 函数返回引用问题
首先,永远不要返回局部变量的引用。因为局部变量在函数返回时被回收,即这个变量不存在了,所以以后对这个变量的引用都是无意义的,结果是不可预知的,程序很可能会崩溃。因此,也就不解释这种情形的结果了。由于静态变量的声明周期直到程序结束,所以返回静态变量的引用是有意义的,而且安全的。下面解释返...
C++返回引用的问题
故在用函数返回值定义一个引用(int &ia = Func1())时,该引用为临时变量的引用,由于临时变量作用域短暂,故该引用存在随时无效的危险。而用引用返回值时,由于不产生值的副本,故int &i = func2();在func2()的返回值是一个静态或者全局变量的情况下的调用是合法可行的,其直接用全局数据区中...
C++运算符重载,+-*\/的重载,返回值为什么是对象而不是对象的引用?而流操...
能返回引用,首先是因为out是作为参数传入的,不是函数的临时变量,函数结束时它仍然存在,这样就可以引用了。 再者,返回引用效率高,不用拷贝一个新的,直接返回它自己。 而且,返回引用有助于连着调用。比如cout<<a<<b<<c<<d,为什么可以连着写?其实<<也是函数,为什么我们平时的函数一般不能连着...
看得懂解析——C++引用做返回值
要解决此问题,需避免引用局部变量,因为局部变量在函数结束时将自动释放。故引用作为返回值时,不可返回局部变量的引用,而允许引用作为左值。理解引用实质为指针常量有助于深入理解,指针常量的概念能有效辅助理解。引用作为返回值的使用需留意局部变量的生命周期,避免引用局部变量的错误。综上所述,C++引用...
c++函数的返回值类型---引用&非引用
c++函数返回值类型:引用与非引用的区别在c++中,函数的返回值类型有明显区分,主要分为返回非引用类型和返回引用类型。两种方式在处理数据时有着显著的不同。1. 返回非引用类型 当你调用一个函数并期望函数返回一个新的对象或值时,它通常会返回非引用。这种方式下,函数创建了一个新的对象并将其值...
C++高手请进按引用返回值应注意什么
(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。(2)不能返回函数内部new分配的内存的引用。这条可以参照Effective C++[1]的Item 31。虽然不存在局部变量的被动销毁问题...
C++返回引用类型
& fun() { int a; a=10; return a; } 这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。因此,要返回一个引用时,“临时变量”不能是“临时”的,至少得等函数外部使用完毕这个引用之后,才能销毁它。
C++ 返回值 引用
引用引用的也是地址,cout<<语句会将地址重新定向,所以返回的地址就不再是引用原来那个值了。就会出现一个奇怪的值。(我执行结果是b:4198699)可以用两个改进办法,一个是把那两句int& f(int &a);改成int f(int &a);这样返回的是值而不是引用,就不会错了。第二个是把子函数里 int c;改...
C++函数返回引用问题
C++为“引用“赋于了新的内涵:当函数的形式参数使用“引用类型”时,函数内对“引用”的操作可以改变原变量的值,而用变量类型作形式参数时是拷贝传值,没有这种优势。返回”引用“的函数在函数名前加一个&,再前面是类型名,比如int &index()是返回一个int型“引用”,因为“引用”是int型某变量...