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++引用详解的主要内容,如果未能解决你的问题,请参考以下文章

C++的引用---李逵又称江湖“黑旋风”

C++的引用---李逵又称江湖“黑旋风”

C++初阶 —— 引用

C++初阶 —— 引用

C++基础学习笔记C++语法之引用

C++基础学习笔记C++语法之引用