C++函数(const与引用一点理解)
来源:互联网 发布:武汉知豆电动汽车4s店 编辑:程序博客网 时间:2024/06/08 05:38
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函数的任意指针的别名.
- C++函数(const与引用一点理解)
- C++函数中const引用形参的一点理解
- const 与函数引用
- 函数返回const指针与const引用。
- C++_引用与const
- C++primer: 引用&与 const 引用
- 经典问题解析(1)---const和引用、指针与引用、函数重载、C方式编译
- 引用与指针的一点理解
- 拷贝构造函数与Const常量引用
- 【c/c++】const引用
- C--我对指针和引用const之后的理解
- C语言 关于#define 与const 一点心得
- C++const对象 常量数据 常量成员函数 const指针 const引用
- 引用与函数(C++)
- C++:const和引用
- const引用与非const引用
- const引用与非const引用
- const引用与非const引用
- 从URL中取得域名
- JSP_EL的回顾
- Centos5.1 搭建Lamp修正版
- button 共享事件
- 动态添加checkbox,与获得checkbox
- C++函数(const与引用一点理解)
- smarty安装及初级使用
- Linux Mysql、Apache、Php卸载
- 实验6 I/O程序设计
- 什么叫虚拟主机?
- TMS IntraWeb Component Pack Pro release v3.0.0.0 for delphi 7组件包安装补充说明
- 建设JXTA技术论坛
- 为什么建立虚拟主机
- 在PHP中加密