首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手一个关于const的有关问题

2013-03-19 
新手求助一个关于const的问题在看c++ primer plus中关于函数重载的章节有一处疑惑//函数原型 void drivel(

新手求助一个关于const的问题
在看c++ primer plus中关于函数重载的章节有一处疑惑

//函数原型
 void drivel(const char * bits);
//两个字符数组
const char p1[20]="How's the weather?";
char p2[20]="How's business?";
//调用函数
drivel(p1)  // drivel(const char *);
drivel(p2)  //drivel(const char *);

书上说,drivel()函数可以与带const或非const参数的调用匹配,主要是由于将非const值赋给const变量是合法的,反之则是非法的,红色的字是不是错了啊,const变量定义初始化后,不是不能再给它赋值了吗?
[解决办法]
主要是由于将非const值赋给const变量是合法的,反之则是非法的
1.非const值赋给const变量是合法的
例如:int i = 10;
      const int &j = i;(合法)
      const int* p = &i;(合法)
2.反之则是非法的
例如:const int i = 10;
      int &j = i;(非法)
      int* p = &i;(非法)  
3.“由于将非const值赋给const变量是合法的,反之则是非法的”只限于指针和引用之间传递,值之间传递怎么都是合法的。
例如:const int i = 10;
      int j = i;(合法,因为传递的是i的副本给j)

热点排行