整容说文库 > 程序代码 > 教育资讯

const int &ri=5; 和 const int i=5; 有什么区别?

来源:学生作业帮助网 编辑:整容说文库 时间:2021/01/17 13:50:55 程序代码
const int &ri=5; 和 const int i=5; 有什么区别?程序代码
rt
void pr(int&)
{
int m1=0;
}

void pr(int)
{
int m2=0;
}

const int &ri=5;
const int i=5;
pr(ri);
pr(i);

分别调用哪个函数 ,m1函数 ,m2函数
楼主定义重载函数啊.
void pr(int&)
void pr(int)
// 这个两个函数没有什么区别.

const int &ri=5;// 引用ri是一个常量,常量引用!
const int i=5;// i是一个常量,不可修改

pr(ri);
pr(i);

两个都是调用的void pr(int),int& 不能引用const 对象
const 引用可以用不同类型的对象初始化
只要能从一种类型转换到另一种类型即可.
也可以是不可寻址的值如文字常量.例如

double dval = 3.14159;
 
const int &ir = 1024;              
const int &ir2 = dval;
// 仅对于const 引用才是合法的.  编译器会生成一个临时的int temp = XXX. 然后引用temp.
#include <iostream.h>
void pr(int&)
{
int m1=0;
cout<<"m1\n";
}

void pr(int)
{
int m2=0;
cout<<"m2\n";
}

void main()
{
const int &ri=5;
const int i=5;
pr(ri);
pr(i);
}
都是调用m2
up  Jinhao(辣子鸡丁·请保护您的眼睛) 
int& 不能引用const 对象
测试代码应该是这样:
#include <iostream.h>
void pr(const int&)
{
int m1=0;
cout<<"m1\n";
}

void pr(int)
{
int m2=0;
cout<<"m2\n";
}

void main()
{
const int &ri=5;
const int i=5;
pr(ri);
pr(i);
}
const int &ri=5;// 引用ri是一个常量,常量引用!
const int i=5;// i是一个常量,不可修改


============================================
还是不明白有什么区别, 比如内存分配上,编译过程上,是否有区别之类的.
可能没有区别
对于楼主的题目来说,这是完全没有区别的。不管是使用方法上,还是编译及内存表达上。
当然,在DEBUG模式上还是有区别的。:)
const int& 和 const int从语法层面上,是有区别的,前者是指针类型( 隐式表达 ),而后者是内置数据类型,在内存中的存储位数,在这里是一样的,32位,存放位置是一样的,都放于"符号表"中.
const int &ri=5;// 引用ri是一个常量,常量引用!
const int i=5;// i是一个常量,不可修改

可能有区别,也可能没有区别。
const int &ri=5;//是一个引用,注意,5是一个字面常量。在.data的常量区节
const int i=5;  //i是可能被编译器解释为一个变量。在.data的变量区节,只是可能
const int &ri=5: ri是引用常量,也就是不能通过ri改变i的值,但是可以通过i改变i的值,此时ri的值也发生变化, 
 const int i=5:i是常量
程序代码