读书人

返回值直接用传参就不会报错?函数返

发布时间: 2012-04-25 19:32:32 作者: rapoo

返回值直接用传参,就不会报错?函数返回引用碰到的怪现象
正在看:返回引用,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。算是能死记住,但是一敲代码,问题就来了......试了下直接返回普通传参......

返回值直接用传参,就不会报错?函数返回引用碰到的怪现象,想想可能是因为不操作,就不会初始化吗?还是其他原因?
这是直接返回传参的写法,只有warning:

C/C++ code
#include <stdio.h>#include <stdlib.h>int &func(int t){  return t;  //This line: [Warning] reference to local variable 't' returned [enabled by default] }int main(int argc, char * argv[]) {      int a=0;      int b=func(a);      printf("&a=0X%08X,&b=%08X\n",&a,&b);    return 0;}

如下写法则会报错:
C/C++ code
#include <stdio.h>#include <stdlib.h>int &func(int t){  return t+1;  //This line: [Error] invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int' }int main(int argc, char * argv[]) {      int a=0;      int b=func(a);      printf("&a=0X%08X,&b=%08X\n",&a,&b);    return 0;}


既然规定是必须用引用或者指针类型做返回值,那是否应该连直接返回都不行?
或者我太纠结细节了么?只要没有修改到啥?....

[解决办法]
第一个,返回局部变量的引用,警告
第二个,返回 临时变量的引用,直接错误。
语法规定。

[解决办法]
探讨

第一个,返回局部变量的引用,警告
第二个,返回 临时变量的引用,直接错误。
语法规定。

[解决办法]
你返回局部变量的引用了。

读书人网 >C++

热点推荐