C++基础知识易错点和易混淆总结汇总(不定时更新)

来源:互联网 发布:密室逃脱窃取数据攻略 编辑:程序博客网 时间:2024/06/08 04:09

以下是我本人不定时更新的易错点汇总,如需转载,请注明出处。

1、对指针的引用

int a = 10;int *p = &a;//初始化指针p。int* &pa = p;//这个是对指针p的引用、在我们使用pa的操作。相当于对p的操作

2、函数返回值的行为

...int add(int a, int b){    return a + b ;}....int a = 1;int b = 2;int c = add(a, b); //create temporary, delete it after executing this statement...

上面的代码中,在 int c = add (a, b);时,发生了如下事情:

      首先:创建了一个临时对象,如temp。

      然后:将函数的返回值 a+ b 的副本 复制给 temp;

      最后:将temp 的副本复制给 变量 c,并删除临时变量 temp

下面给出一个常见的错误:

#include <iostream>#include <string>using namespace std;const float pi = 3.14f;float f;//全局变量//返回一个floatfloat fun1(float r){f = r*r*pi;return f;}//返回一个引用float& fun2(float r){f = r*r*pi;return f;}int main(){float fun1(float=5);//正确:默认参数调用float& fun2(float=5);//正确:默认参数调用float a = fun1();////正确float& b= fun1();//错误:返回值会保存到一个临时变量temp,对一个临时变量的引用//会出问题的float& c= fun2();//正确 这种方式直接返回一个全局变量的引用,是最节省内存空间的//但是也是容易出问题,要注意所引用变量的有效期,此处,全局//变量的引用明显比c的有效期长。所以是安全的getchar();return 0;}




持续更新中!!!!!!

0 0
原创粉丝点击