保护实参不被修改的办法就是用const指针和引用。
1、下面的程序传递一个const double型常量指针,返回一个指针。
代码:
#include <iostream>
using namespace std;
double* fn(const double* pd){ //pd -->a
static double ad = 32;
ad += * pd;
cout << "fn being called ... the value is : "<< *pd << endl;
return &ad;
}
int main (){
double a = 345.6;
const double* pa = fn(&a); //pa -->ad
cout << *pa <<endl;
a = 55.5;
pa = fn(&a);
cout << *pa << endl;
return 0;
}
测试结果:
fn being called ... the value is : 345.6
377.6
fn being called ... the value is : 55.5
433.1
2、上面的程序用引用重写后,可能更加便于理解:
代码:
#include <iostream>
using namespace std;
double& fn (const double& pd){
static double ad = 32;
ad += pd;
cout << "fn being called ... the value is :"<< pd << endl;
return ad;
}
int main (){
double a = 345.6;
double& pa = fn(a);
cout << pa << endl;
a = 55.5;
pa = fn(a);
cout << pa << endl;
return 0;
}
测试结果:
fn being called ... the value is : 345.6
377.6
fn being called ... the value is : 55.5
433.1