先说一下引用调用
C++有这样一段代码
#include<stdio.h>
void swap(int &x, int &y)
{
int tmp = x;
x = y;
y = tmp;
}
int main(void)
{
int a = 1, b = 2;
printf("a=%d, b=%d\n", a, b);
swap(a, b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
这里面的 & 表示是引用调用,也就是直接将实参传到函数,而不是将实参拷贝给形参,然后形参传进函数,所以这样的方式可以更改实参的值。
C++中有关键字 const
情况一
void avoidchange(const int x)
书上说const关键字可以防止函数内部修改参数,那么这样的方式是调用的时候将实参拷贝给形参,然后对形参进行操作,那么就算改变了形参的值又有什么影响呢?
所以说这种情况下这样使用const应该是没有必要的吧?
情况二
还是说应该这样使用
void avoidchange(const int & x)
这样将实参直接传给函数,就少了拷贝给形参的过程,所以会更快(int参数还不明显,假如是某个比较大的结构体或者类对象就更为明显了),但是这种情况下可能不想在函数内部更改传入的实参,所以就要加个const既提醒开发者,又提醒编译器。
我这样的理解是不是对的?
另外对于const、以及C++函数的定义和调用还有哪些需要知道的知识点?
就真正开发实践来说,大多数情况下 const都是修饰内存地址,因为在函数内部中,很有可能对内存地址进行修改,对于参数访问,就算你对变量(这里区别于内存地址)进行修饰,一样能通过内存访问进行修改。楼主可以看看实际应用上来讨论这些问题,