...* this; 是和void print()const;中this指针的类型是一样的,所以常量对象可以调用const成员函数。 1.3K20 c和c++的区别 (三)const&(引用)和const*(地址)在函数中的应用 &a=GetInt();//错误 //引用初始化的值要能取地址,寄存器没有地址 修改为:constint& a=GetInt(); return 0; } 二、返回局部...
1、int * ( const p ):变量p 经过 const 修饰,为只读变量。 2、int (* (const p)):(const p 现在作为一个整体) 只读变量p是一个指针。 3、(int (* (const p))):(同样的 * const p 作为一个整体) 这个只读的指针p,指向一个int型变量。 于是,可以区分出 int * const p 是一个指向 int 型...
const 成员函数的返回类型是引用时候,需要加const 约束 intfun()const;int& fun()const; 成员函数中上面是合法的,下面缺不合法,具体例子如下,对于第5行 函数返回类型中的const 不能省略,不管第10行是否有const,这应该是内部value 对象类型的转换,GetValue 函数中的value 被转换成了 const int(第10行没有const ...
//float &b=fn1(5.0); //case 2:用函数的返回值作为引用的初始化值 [Error] invalid initialization of non-const reference of type 'float&' from an rvalue of type 'float' //(有些编译器可以成功编译该语句,但会给出一个warning) float c=fn2(5.0);//case 3:返回引用 float &d=fn2(5.0);/...
const char* GetString(void);如下语句将出现编译错误:char*str = GetString();正确的用法是 const char*str = GetString();五、修饰全局变量 全局变量的作用域是整个文件,我们应该尽量避免使用全局变量,以为一旦有一个函数改变了全局变量的值,它也会影响到其他引用这个变量的函数,导致除了bug后很难发现,...
如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针,例如 const char * FUN(void); 如下语句将出现编译错误: char *str = FUN(); 正确的用法是 const char *str = FUN(); 思考 C与C++中的const用法有什么区别...
二、const 类对象 const类对象指的是,此类对象不应该被改变。 const 类对象与 const 变量并无实质不同,只在于类对象的 “改变” 定义。 类对象的 “改变” 定义:改变任何成员变量的值,调用任何非const成员函数 classCDebugModule {public: CDebugModule() {};~CDebugModule() {};public:intm_debugLevel;pu...
- 声明带有const修饰的函数返回值的语法为:const 数据类型 函数名(参数列表)。const修饰符也可以修饰函数的返回值,返回值不可被改变。例如:const int Fun(void);在另一连接文件中引用const只读变量:extern const inti;//正确的声明 extern const intj=10;//错误!只读变量的值不能改变。注意这里是声明不是...
voidfind(constint &x) { ... } AI代码助手复制代码 最后,举两个常用的标准C库函数声明,它们都是使用const的典范。 1.字符串拷贝函数:char*strcpy(char*strDest,constchar *strSrc); 2.返回字符串长度函数:intstrlen(constchar *str); 03#define...
1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误) 2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用); 3、唯一的例外是对于mutable修饰的成员。 加了const的成员函数可以被非const对象和...