函数形参 const 引用居多的原因
大部分c++函数形参如果是引用,都是const类型的引用,为什么呢? 答案就是const类型的引用可以,接受const类型的参数,和非const类型的参数. 下面代码距离说明
普通的函数形参引用,不带const的例子
下面代码函数传入const类型的参数直接报错了.
int add2(int& a, int& b){
return a + b;
}
int main(int argc, const char * argv[]) {
int a = 3;
const int b = 5;
add2(a,a);
add2(a,b);
}
函数形参是const引用的例子
int add(const int & a, const int &b){
return a + b;
}
int main(int argc, const char * argv[]) {
int a = 3;
const int b = 5;
int c = 4;
cout << add(a,b) <<endl;
cout << add(a,c) <<endl;
}
下面例子是是函数形参是对象类型,const 引用依然可以接受const 和 非const对象
class Person{
public:
int age;
Person(int a):age(a){}
};
int add3(const Person &a ,const Person &b){
return a.age+ b.age;
}
int add4(Person &a , Person &b){
return a.age+ b.age;
}
int main(int argc, const char * argv[]) {
Person p1(3);
Person p2(4);
const Person p3(5);
add3(p1,p2);
add3(p2,p3);
add4(p1,p2);
add4(p2,p3);
}
|