当形参是 const 变量时,实参是 const 或者不是 const 变量都可以。 实参初始化形参时会忽略掉顶层 const: 1voidgel(constinta){2;3}45voidgel(inta){6;7}8//这两个gel函数的形参列表是等价的,因此会出现编译错误。 指针或引用形参与 const 1#include <iostream>2usingnamespacestd;34voidgel(int*a){5;...
1.如果函数的形参是指向非const型变量的指针,则实参只能用指向非const变量的指针,而不能指向const变量的指针,这样在执行函数的过程中可以改变形参指针变量所指向的值,如果函数的形参指向const型变量的指针,则在执行函数的过程中显然不能改变指针变量所指向变量的值,因此允许实参是指向const或者非const变量的指针。 2.在...
尤其在传递函数参数时,使用const引用(const <typename> & p) 2.如果用非const引用作为函数的形参,只能接受非const实参。而使用cons引用作为形参能够接受const实参和非const实参。 3.如果使用非const引用作为参数,调用函数时无法使用类型不匹配的参数(例如参数为long long&,我在调用函数时,可以用long long(非引用)作为...
note:如果函数调用的参数不是左值或与相对应的const引用参数的类型不匹配,则C++将创建正确的匿名变量,将函数调用的参数的值传递给匿名变量,并让参数来引用该变量。 应该尽量的使用const 引用 使用const可以避免无意中修改数据的编程错误 使用const使函数能够处理const和非const实参,否者只能接受非const数据 使用const引用...
可基于函数的引用形参是指向 const 对象还是指向非 const 对象,实现函数重载。将引用形参定义为 const 来重载函数是合法的,因为编译器可以根据实参是否为 const 确定调用哪一个函数。 const到底是不是一个重载的参考对象,请看下面的例子 classA{public:voidf(inti){std::cout<<"1";};//函数1voidf(inti)const...
(1)不能将const 类型的对象传递给non-const 类型的引用。 const int cx=100; int & rx=cx; //error (2)不能将const 类型的实参传递给形参为non-const 类型引用的函数。 void f(int a) {} void g(int & ra) {} const int cx=100;
在const函数中传递this的时候把this变成了const T* const this(个人理解),所以一个非const的引用指向一个const类型的变量,就会error。 可以这样改, 1.把int value 改成mutable int value.mutable修饰的变量使之在const函数中可以被改变的。 2.return value 改成。return const_cast<int &>(value)。const_cast去...
引用可以被const修饰,这样就无法通过引用修改数据了,可以称为常引用 const必须写在&符号的左边,才算是常引用 const引用的特点 可以指向临时数据(常量、表达式、函数返回值等) 可以指向不同类型的数据 作为函数参数时(此规则也适用于const指针) 可以接收const和非const实参(非const引用,只能接收非const实参) ...
出现在函数参数中的const 表示在函数体中不能对这个参数做修改。比如上面的例子中strcmp() 函数用来比较两个字符串的大小,在函数体中不应该改变两个参数的值,所以将它定义为是const 的。const 通常用来限制函数的指针参数,引用和数组参数,而一般形式的参数因为形参和实参本来就不在同一内存空间,所以对形参的修改不会...
具体来说,将形参声明为 const 类型,可以避免在函数内部无意中修改参数的值,从而防止不必要的副作用。这对于函数的调用者来说也是一种保障,可以放心地传递参数,不必担心参数的值被改变。此外,使用 const 关键字还可以扩展函数的适用范围,因为 const 对象可以接受非 const 对象的赋值,而反过来则不行...