c++ 返回 常引用

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:15:15
下边两个函数一个返回引用,一个返回常引用

int &Max(int &a, int &b)
{
return a > b ? a : b;
}

const int &Max1(int &a, int &b)
{
return a > b ? a : b;
}

具体有什么区别,什么时候返回引用,什么时候返回常引用
请举例解释, 谢谢!!!
谢谢大家的回答

const int &Max(int &a, int &b)
{
return a > b ? a : b;
}

int a = 2, b = 1;
int &c = Max(a, b);

c = 3;

这时候 c 就成了 a 的常引用
a 的值 改变不会影响 c,c 的值 改变也不会影响 a

如果 a c 不是整数 是一个类的对象,a c 就是两个不同的实例了吗?

这样一个程序

#include <stdio.h>

const int &Max(int &a, int &b);

int main(void)
{
int a = 2, b = 1;
int &c = Max(a, b);
c = 3;

printf("a=%d", a);
}

const int &Max(int &a, int &b)
{
return a > b ? a : b;
}

c = 3 以后 a 还是 2,并没有改变

这里 通过看 a 和 c 的地址,a 和 c 的地址是不同的,根本不是同一个变量

#include <stdio.h>

int &Max(i

比如我有个程序,有两个整数,我想给较大的数重新赋值为10,就要用引用,因为我要改变变量的值.加了const就会出错,因为常量无法修改.

#include<iostream>
#include<math.h>
using namespace std;

//const int &Max(int &a,int &b)会编译错误
int &Max(int &a, int &b)
{
return a > b ? a : b;
}

void main()
{
int p=2,q=1;
Max(p,q)=10;
printf("%d %d",p,q);
}

但如果我只想知道较大的值是多少,并不想对较大的变量进行修改,就可以用返回常引用.

常引用就是防止改变被引用的量

tanyuguo 说的很对
我看你是理解有误

c 就成了 a 的常引用 //没有依据 错的
a 的值 改变不会影响 c,c 的值 改变也不会影响 a //更是无从谈起
a c 就是两个不同的实例了吗? //引用怎么会是两个实例 它们是同一个实例

const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
const使用:
1. 用于指针的两种情况:const是一个左结合的类型修饰符.
int const *A; //A可变,*A不可变
int *const A; //A不可变,*A可变
2.限定函数的传递值参数:
void function(const int Var); //传递过来的参数在函数内不可以改变.
3.限定函数返回值型.
const int function(); //此时const无意义