标签:const
//交换函数,传递的实参只是参数的副本。并不能起到交换作用
void swap(int a, int b) {
int m = a;
a = b;
b = m;
}
//可以起到交换作用
void swap(int *a, int *b) {
int m = *a;
*a = *b;
*b = m;
}
//可以起到交换作用
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
用const修饰形参,避免实参被修改
string::size_type length(const string &str) {
return str.size();
}
//1
void m(int a[]) {
cout << a[0] << endl;
}
//2
void m(int *a) {
a[0] = 3;
cout << a[0] << endl;
}
int a[] = {1, 2, 3};
m(a);
也可以使用const数组形参
一般使用非const形参,实参会复制一份传递。
但是针对数组,数组会悄悄转为指针,参数传递是这个指针的副本,指向数组第一个元素,更改这个值,也就可以改变数组元素的值
把要返回的对象复制一个副本返回回去
const string getString(const string &str1, const string &str2) {
return str1.size() < str2.size()? str1 : str2;
}
没有复制直接返回原对象,但是千万不要返回局部对象的引用,因为函数运行完这些对象要销毁
const string &getString(const string &str1, const string &str2) {
return str1.size() < str2.size()? str1 : str2;
}
【C++总结】函数形参,返回const对象与非const对象
标签:const
原文地址:http://blog.csdn.net/ttf1993/article/details/46121983