C++引用详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++引用详解相关的知识,希望对你有一定的参考价值。
引用
1.概念
例1
例二
#include<iostream>
using namespace std;
int main()
int a = 20;
int& b = a;
b = 20;
return 0;
2.特性
1.引用必须在定义时初始化
1.错误举例
#include<iostream>
using namespace std;
int main()
int a = 20;
int& b;
return 0;
2.一个变量可以有多个别名
#include<iostream>
using namespace std;
int main()
int a = 10;
int& b = a;
int& c = a;
int& d = a;
return 0;
3.引用一旦引用一个实体,再不能引用其他实体
3.常引用
1.错误举例
#include<iostream>
using namespace std;
int main()
const int a = 10;
int& b = a;
return 0;
2.正确举例
#include<iostream>
using namespace std;
int main()
const int a = 10;
const int& b = a;
return 0;
3.权限问题
4.引用误区
1.起别名
#include<iostream>
using namespace std;
int main()
const int a = 1;
int& b = a;
return 0;
2.赋值
#include<iostream>
using namespace std;
int main()
const int a = 1;
int b = a;
return 0;
5.使用场景
1.引用做参数
2.引用做返回值
1.传值返回
2.传引用返回
3.解释
6.使用局部变量返回的危害
#include<iostream>
using namespace std;
int& add(int a, int b)
int c = a + b;
return c;
int main()
int& ret = add(1, 2);
add(3, 4);
cout << ret << " " << endl;
return 0;
###1.解决方法
#include<iostream>
using namespace std;
int& add(int a, int b)
static int c = a + b;
return c;
int main()
int& ret = add(1, 2);
add(3, 4);
cout << ret << " " << endl;
return 0;
2.测试用例
#include<iostream>
#include<time.h>
using namespace std;
struct A
int a[10000];
;
A a;
A test1()//值返回
return a;
A& test2()//引用返回
return a;
int main()
//以值作为函数的返回值类型
size_t begin1 = clock();
for (size_t i = 0; i < 1000000; i++)
test1();
size_t end1 = clock();
//以引用返回作为函数的返回值类型
size_t begin2 = clock();
for (size_t i = 0; i < 1000000; i++)
test2();
size_t end2 = clock();
//计算两个函数运算完成之后的时间
cout << "test1 time :" << end1 - begin1 << endl;
cout << "test2 time :" << end2 - begin2 << endl;
return 0;
以上是关于C++引用详解的主要内容,如果未能解决你的问题,请参考以下文章