新手一个关于const的有关问题
新手求助一个关于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)