学习C++ Primer Plus碰到的const问题!

Robin_007 2007-07-16 10:18:29
我跟据书本写了以下代码:
#include<iostream>
using namespace std;
int main(void)
{
int age=39;
const int *pt =&age;
cout<<"age="<<age<<endl;
cout<<"*pt="<<*pt<<endl;//不能修改*pt的值,但可以修改age值;
int age1=40;
pt=&age1;//可以修改pt指向的地址;
cout<<"*pt="<<*pt<<endl;

const int** pp2;
int *p1;
const int flag=100;
pp2=&p1;//出错地方!
*pp2=&flag;
*p1=10;
cout<<"flag="<<flag<<endl;//应该尽可能的使用const:1、可以避免由于无意间修改数据而导致的编成错误;2、使用const使得函数能够处理const和非const实参,否则只能接受非const数据;
return 0;
}

编译出现错误:
error C2440: '=' : cannot convert from 'int ** ' to 'const int ** '
Conversion loses qualifiers

高手帮帮忙,搞不懂为什么会出现这个错误!
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingyys 2007-07-18
  • 打赏
  • 举报
回复
int *p1; 改成const int *p1
去掉 *p1=10;
king_wp 2007-07-17
  • 打赏
  • 举报
回复
const 相当于定义常量,pp2=&p1;这么写相当于给常量赋值了,当然会有问题了。
const int *pt =&age;这么写算是给常量初始化,所以没有问题,
在。NET2005下都不能将类型“int**”声明为 const的,你在vc6下写的程序吧。
sugarzhx 2007-07-17
  • 打赏
  • 举报
回复
const int** pp2;这句有问题;const对象声明的时候必须进行初始化, 之后它的值就不能改变

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧