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

    xiaoxiao2021-11-10  63

    #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 第四版

    转载请注明原文地址: https://ju.6miu.com/read-678175.html

    最新回复(0)