C++函数(const与引用一点理解)

本文详细解析了C++中函数参数的使用,包括实参与形参的匹配规则、const修饰符的影响以及引用参数的注意事项。并通过示例展示了如何正确传递不同类型参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
C++是一种静态强类型语言,对于每一次的函数调用,编译时都会检查其实参,所以如果出现实参和形参不匹配(个数不匹配,类型不匹配)则会报错,当然,如果是能够强制转换的类型也是可以的,比如:实参为int,形参为double,这样会编译通过,因为int可强制转换成double,只是丢失精度.大多数编译器会因此发出警告,不过我用VC6.0编译并没有警告信息出现.
 
关于const形参:如果一个函数的形参参数类型为const,则调用时,实参既可是const,也可是非const.
如:void fun1(const int x) {}
void main() {int x;const int y;fun1(x);fun1(y);}
都是合法的,对于实参是非const的调用,在函数中不能通过x修改值.
对于引用的时候则会不同:
如:void fun1(string &s) {}
void main() {fun1(“Hello”); }//会出错,因为Hello是一个常量.
void fun2(const string str) {
       fun1(str); //也会报错,因为str是const类型的
}
所以,如果不打算在函数修改参数的话,就把参数设置为const类型的
如:void fun1(const string &s) {}就不会出现以上错误
否则就会出现一系列错误,只能允许非常量,非const类型的变量当实参.可以又有人问了,为什么要设计成引用的,有什么好处.哈,引用可以减少复制时所花费的空间&&时间,当然,你的参数如果是基本数据类型的话,那是基本上…..,但如果是大型对象的话,就麻烦了.
 
如果我们想通过函数调用修改两个指针指向的内容,该怎么写形参呢?如下:
void ptrswap() {},括号里面要怎么写?
void ptrswap(int *&v1,int *&v2) {
       int *temp = v1;
       v1 = v2;
       v2 = temp;
}
即可,达到目地,我们分析一下,从右至左理解,首先,v1是一个引用,与指向int型对象的指针相关联.也就是说,v1只是传递进ptrswap函数的任意指针的别名.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值