#include "iostream"
using namespace std;
int addItem(const int *p1,const int *p2){
return *p1+*p2;
};
int addItem1(int *p1,int *p2){
return *p1+*p2;
};
int addItem2(int i,int j){
return i+j;
};
int addItem3(const int i,const int j){
return i+j;
};
void main(){
int i=2;
int *a1=&i;
int *a2=&i;
cout<<addItem(a1,a2)<<endl;
cout<<addItem1(a1,a2)<<endl;
const int *aa1=&i;
const int *aa2=&i;
cout<<addItem(aa1,aa2)<<endl;
//cout<<addItem1(aa1,aa2);//报错
//对于指针可以将指向const对象的指针初始化为指向非const对象,
//但不可以让指向非const对象的指针指向const对象
const int i1=2;
int i2=3;
cout<<addItem2(i1,i2)<<endl;
//如果函数使用的是非引用的非const形参,则即可给该函数传递const实参,也可传递非constt的实参
//原因是源于const对象的标准初始化规则,初始化时复制了初始化式的值,,将const对象初始化为非const对象
cout<<addItem3(i1,i2)<<endl;
//初始化时,将非const对象初始化为了const对象
cout<<system("pause");
return;
}
书籍参考: c++ primer 第四版