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

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值