string类定义了一种char*到string的转换功能,这使得可以使用C-风格字符串来初始化string对象。 类型为const引用的形参其中一个属性表明:假设实参的参数类型与引用参数不匹配,但可以转换为引用类型,程序将创建一个正确类型的临时变量,使用转换后的实参值来初始化它,然后传递一个指向该临时变量的引用。 从上面两条属性我...
佷显然,采用const关键字修饰函数形参,就是为了保护输入参数。在调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,如形参为const int * a,则不能对传递进来的指针所指向的内容进行改变,保护了原指针所指向的内容;如形参为const int & a,则不能对传递进来的引用对象进行...
和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const。换句话说,形参的顶层const被忽略掉了。当形参有顶层const时,传给它的常量对象或者非常量对象都是可以的: void fcn(const int i){ /*fcn能够读取i,但是不能向i写值*/} 调用fcn函数时,既可以传入const int也可以传入int。忽略掉形参的顶层const可...
c. 函数的参数也可以用const说明,用于保证实参在该函数内部不被改动。 常引用 如果在声明引用是用const修饰,那么该引用就被称为常引用。常引用所引用的对象不能被更新。如果用常引用做为形参,便不会产生对实参不希望的修改。 定义:const 数据类型 &引用名; 如: int a = 5; const int &b = a; 其中,b是...
2、给函数传递大型对象当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。下面的例子定义了一个有限整数集合的类: const maxCard=100; Class Set { int elems[maxCard]; // 集和中的元素,maxCard 表示集合中元素个数的最大值。
int* const p = &a; *p = 20;//正确 p = &b;//错误 3、const 修饰函数形参,以防止一些非预期的参数修改。 个人记忆法: 1、常量指针与指针常量的命名记忆:const 在*前叫常量指针;*在const前叫指着常量。 2、const 在*前,即常量指针,const 修饰了*p,则*p不能被修改,即指针指向的值不能修改(注:这...
我们知道实参的改变不影响形参,所以这种写法并不能改变值,因为此刻是传值调用: 按照之前 c 的写法,我们使用传址调用,用指针修改: 但是学习引用之后,完全可以用引用修改: x和 y 分别是 a 和 b 的引用,对 x 和 y 进行修改,就是对 a 和 b 进行修改,所以值也被修改成功了。调试一下: ...
const 作用 修饰变量,说明该变量不可以被改变; 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer); 修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改; 修饰成员函数,说明该成员函数内不能修改成员变量。
(c)const指针可以接受const和非const地址,但是非const指针只能接受非const地址。所以const指针的能力更强一些,所以尽量多用const指针,这是一种习惯。3.》》(a)const与函数。由于2(c),所以经常把函数的形参类型设为const,而且多为const 引用。但是这里有一个限制,不能把不是左值的地址传递给引用...
const int *const A;//指针A和A指向的对象都不可变 - 修饰常引用 使用const修饰符也可以说明引用,被说明的引用为常引用,该引用所引用的对象不能被更新。其定义格式如下: > const double & v; - 修饰函数的常参数 const修饰符也可以修饰函数的传递参数,格式如下: ...