您的位置:首页 > 其它

关于const对象和非const对象在函数参数传递式的规则

2016-11-18 09:49 344 查看
#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 第四版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 函数