函数形参参数:const对象,const指针 const引用 实例

来源:互联网 发布:内网网络硬盘源码 编辑:程序博客网 时间:2024/05/22 01:55

#include"header.h"

void Function1(int aa);
void Function2(const int aa);
void Function3(int *aa);
void Function4(const int *aa);
void Function5(int &aa);
void Function6(const int &aa);

void main()
{
  int var1=10;
  const int var2=20;
  int Arry1[10]={0,1,2,3,4,5,6,7,8,9};

  int *per1=&var1;
  //int *per4=&var2;//'initializing' : cannot convert from 'const int *' to 'int *'

  const int *per2=&var2;
  const int *per3=&var1;
 
  int *per5=Arry1;
  const int *per6=Arry1;
//const指针能指向const对象也能指向非const对象,而非const对象只能指向非const对象
 

  Function1(var1);
  Function1(var2);
  //形参:非const对象,实参:非const对象或const对象,函数体可以改变形参的值

  Function2(var1);
  Function2(var2);
  //形参:const对象,实参:非const对象或const对象,函数体不能修改形参的值

  Function3(per1);
  //Function3(per2);//cannot convert parameter 1 from 'const int *' to 'int *'
  //形参:非const指针,实参:只能是非const指针, 函数体可以改变形参所指向对象的值
 
  Function4(per1);
  Function4(per2);
  //形参:const指针,实参:非const指针或const指针,函数体不能修改形参所指向对象的值
 
   Function5(var1);
   //Function5(var2);//cannot convert parameter 1 from 'const int' to 'int &'
   //形参:非const引用,实参:只能是非const对象, 函数体可以改变形参所关联对象的值

   Function6(var1);
   Function6(var2);
   //形参:const引用,实参:非const对象或const对象,函数体不能修改引用所关联对象的值
}
 void Function1(int aa)
 {
  aa=100;
  cout<<"Function1:"<<aa<<endl;
 }
 void Function2(const int aa)
 {
//  aa=100;  //error C2166: l-value specifies const object
  cout<<"Function2:"<<aa<<endl;
 }
 void Function3( int *aa)
 {
  *aa=200;
  cout<<"Function3:"<<*aa<<endl;
 }
 void Function4(const int *aa)
 {
 // *aa=100;  //error C2166: l-value specifies const object
  cout<<"Function4:"<<*aa<<endl;
 }

 void Function5(int &aa)
 {
 aa=150;
 cout<<"Function5:"<<aa<<endl;
 }

 void Function6(const int &aa)
 {
  //aa=143;//error C2166: l-value specifies const object
  cout<<"Function6:"<<aa<<endl;
 }