rror C2440: 'initializing' : cannot convert from 'const int' to 'int &'

baiye1134 2010-09-07 05:31:05
如上:
#include<iostream.h>
const int a=188;
void main()
{
double n1=18;
double &n2=n1;
n2=10.18;
cout<<"n1="<<n1<<", "<<"n2="<<n2<<endl;
double &n3=n2;
n2=11.118;
cout<<"n1="<<n1<<", "<<"n2="<<n2<<", "<<"n3="<<n3<<endl;
double* ptr=&n1;
double* &p=ptr;
*p=18.218;
cout<<"n1="<<n1<<", "<<"n2="<<n2<<", "<<"n3="<<n3<<endl;
cout<<"*ptr="<<*ptr<<", "<<"*p="<<*p<<endl;
cout<<"&n1="<<&n1<<endl;
cout<<"*&n1="<<*&n1<<endl;
int &b=a;
cout<<"a="<<a<<endl;
}


。。。求为什么出错?
...全文
388 点赞 收藏 8
写回复
8 条回复
mskmc_mc 2010年09月07日
double* &p=ptr;

int &b=a;


改为 double * p=ptr;
const int &b=a;
回复 点赞
生活简单到无聊 2010年09月07日
int &b=a;
a是常量b是可变的。。一旦改变b的值就相当于对a进行改变。。。但是a是常量。。当然要避免这种事情发生。。。这里的问题。。
回复 点赞
yh_no_code 2010年09月07日
[Quote=引用 4 楼 zengxianliang 的回复:]
编译器说的很明白了
int &b=a;
不能用一个非const的引用来指向const类型的变量,要不然const类型的变量不就可以被修改了
[/Quote]

类型要一致!
回复 点赞
黑泡泡选手 2010年09月07日
嗯,楼上几位的答案很精辟!
回复 点赞
ZengXianLiang 2010年09月07日
编译器说的很明白了
int &b=a;
不能用一个非const的引用来指向const类型的变量,要不然const类型的变量不就可以被修改了
回复 点赞
珍惜生命远离CPP 2010年09月07日
int &b=a;
改成
const int &b=a;
回复 点赞
arong1234 2010年09月07日
a是常量,不能给引用初始化,int & b =a 是不合法的,应该是const int & b=a;
回复 点赞
justkk 2010年09月07日
哪一行出错?
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告