关于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 第四版
相关文章推荐
- 关于C#函数对象参数传递的问题
- 关于C#函数对象参数传递的问题
- (笔记)关于函数形参中使用const引用和非const引用间的区别
- Boost关于bind的使用以及函数对象和传递参数的问题
- 关于C#函数对象参数传递的问题
- 非const引用参数传入不同类型编译不过的理解(拒绝将临时对象绑定为非const的引用的形参是有道理的)
- C++关于类成员函数在参数列表后加const的作用,以及使用条件
- C++中关于将fstream对象作为函数参数传递相关问题说明
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- 【转载】用const修饰函数 以及引起的附加限制:const函数不能调用非const的函数或引用非const参数
- C++ const 参数 成员函数 规则
- 关于C#函数对象参数传递的问题
- 【C++总结】函数形参,返回const对象与非const对象,成员函数,函数指针
- 关于C#函数对象参数传递的问题
- 关于函数调用中的const参数
- void*参数函数的const和非const重载函数版本
- const类型参数的对象引用和const成员函数
- const变量、const指针、const参数、const对象、const成员函数
- [c++]基类对象作为函数参数(赋值兼容规则)
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题