带有 *& 参数的函数中的 Const 关键字。
Const keyword in function with an *& argument.
能否请您在以下代码中解释原因:
#include <iostream>
void fun(char * const & x){(*x)++;}
int main(){
char txt[100]="kolokwium";
fun(txt);
std::cout << txt <<"\n";
}
编译代码需要关键字const?
如果我删除它,我会得到:
invalid initialization of non-const reference of type ‘char*&’ from an rvalue of type ‘char*’
谢谢!
txt
是 char[100]
类型。它必须转换为 char *
才能传递给 fun
;此转换产生 rvalue。您不能从右值创建非常量引用。
为了说明,请考虑如果 fun
定义如下会发生什么:
void fun(char *&x) { x++; }
下面的代码会做什么(假设它可以编译)?
char txt[100]="kolokwium";
fun(txt); // Huh?
能否请您在以下代码中解释原因:
#include <iostream>
void fun(char * const & x){(*x)++;}
int main(){
char txt[100]="kolokwium";
fun(txt);
std::cout << txt <<"\n";
}
编译代码需要关键字const?
如果我删除它,我会得到:
invalid initialization of non-const reference of type ‘char*&’ from an rvalue of type ‘char*’
谢谢!
txt
是 char[100]
类型。它必须转换为 char *
才能传递给 fun
;此转换产生 rvalue。您不能从右值创建非常量引用。
为了说明,请考虑如果 fun
定义如下会发生什么:
void fun(char *&x) { x++; }
下面的代码会做什么(假设它可以编译)?
char txt[100]="kolokwium";
fun(txt); // Huh?