c++ const的各种用法

  • 时间:
  • 浏览:1
  • 来源:神彩快3_彩神快3官方

很久 你想学习C/C++还要能 来这些 群,首先是31000,顶端是859,最后是766,顶端还要能 学习和交流,全部都在资料还要能 下载。

4. const修饰函数参数

1.定义const对象熟悉的形式  const  int bufSize = 512; 变量bufSize仍然是个左值,有很久 不还可不还可以 修改的,很久 常量在定义后就不还可不还可以 修改,没了来太多定义时要能 初始化:const std::string hi = "hello!";       /**ok*/const int aaa = 125;                    /**ok*/const int  i  ,  j  = 1;                     /**error,i 未初始化*/在这里要说一下,const 与#define的异同:当我们都 儿都还要能 用当我们都 来定义常量,但const 比#define有更多优点:(1)const 定义的常量有数据类型,而#define 没了数据类型,编译器还要能 对前者进行类型安全检查,而#deifne 不还可不还可以 进行字符串的替换,没了类型安全检查,而在字符串替换时很久 产生意想不还可不还可以 的错误。(2)调试工具还要能 对const 常量进行调试,有很久 不还可不还可以 对#define 宏常量进行调试。没了来太多在c++程序运行运行中,一般用const定义符号常量比#define更好2.const引用const引用是指指向const对象的引用:const int ival = 1024;const int &reival = ival;   //ok.两者全部都在constint &ref = ival;   // invalid initialization of reference of type 'int&' from expression of type 'const int'|(codeblocks 中)const 引用还要能 初始化为不同的对象很久 初始化为右值,如:int i = 42;const int &r = 42;const int &r2 = 42 + i;同样的初始化对于非const引用却不合法有很久 会导致 编译错误其导致 是非常微妙的,解释一下:观察将引用绑定到不同的类型时所存在的事情,最易理解:例如double  dval = 3.14;const int &ri = dval;编译器会把有有哪些代码转换成如下形式:int temp = dval;const int &ri = temp;3.指针和const限定符(1)  指针有三种是常量不可变(char*) const pContent;(2)  指针所指向的内容是常量不可变const (char) *pContent;(char) const *pContent;(3)  两者全部都在可变const char* const pContent;还有其中区别土最好的办法:沿着*号划四根线,很久 const存在*的左侧,则const没了来太多用来修饰指针所指向的变量,即指针指向为常量;

}对于const类对象/指针/引用,不还可不还可以 调用类的const成员函数,有很久 ,const修饰成员函数的最重要作用没了来太多限制对于const对象的使用。7. const常量与define宏定义的区别(1) 编译器补救土最好的办法不同define宏是在预补救阶段展开。const常量是编译运行阶段使用。(2) 类型和安全检查不同define宏没了类型,不做任何类型检查,仅仅是展开。const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储土最好的办法不同define宏仅仅是展开,有多少地方使用,就展开多少次,太多再分配内存。const常量会在内存中分配(还要能 是堆中也还要能 是栈中)。

void function(const int Var); //传递过来的参数在函数内不还要能 改变(无意义,很久 Var有三种没了来太多形参)void function(const char* Var); //参数指针所指内容为常量不可变void function(char* const Var); //参数指针有三种为常量不可变(也无意义, 很久 char* Var也是形参)参数为引用,为了增加强度一起补救修改。修饰引用参数时:void function(const Class& Var);//引用参数在函数内不还要能 改变void function(const TYPE& Var); //引用参数在函数内为常量不可变5. const 修饰函数返回值const修饰函数返回值我我虽然用的并全部都在没了来太多,它的含义和const修饰普通变量以及指针的含义基本相同。(1) const int fun1() 这些 我我虽然无意义,很久 参数返回有三种没了来太多赋值。(2) const int * fun2()调用时 const int *pValue = fun2();当我们都 儿还要能 把fun2()看作成有有一个多变量,没了没了来太多当我们都 儿顶端所说的1.(1)的写法,即指针内容不可变。(3) int* const fun3()调用时 int * const pValue = fun2();当我们都 儿还要能 把fun2()看作成有有一个多变量,没了没了来太多当我们都 儿顶端所说的1.(2)的写法,即指针有三种不可变。4. const修饰类对象/对象指针/对象引用const修饰类对象表示该对象为常量对象,其中的任何成员全部都在能被修改。对于对象指针和对象引用也是一样。const修饰的对象,该对象的任何非const成员函数全部都在能被调用,很久 任何非const成员函数会有修改成员变量的企图。例如:class AAA{    void func1();

}const AAA aObj;aObj.func1(); ×aObj.func2(); 正确const AAA* aObj = new AAA();aObj->func1(); ×aObj->func2(); 正确5. const修饰成员变量const修饰类的成员函数,表示成员常量,不还可不还可以 被修改,一起它不还可不还可以 在初始化列表中赋值。class A{   …   const intnValue;       //成员常量不还可不还可以 被修改   …   A(int x):nValue(x) {}; //不还可不还可以 在初始化列表中赋值}6. const修饰成员函数const修饰类的成员函数,则该成员函数不还可不还可以 修改类中任何非const成员函数。一般写在函数的最很久 修饰。class A{   …void function()const; //常成员函数, 它不改变对象的成员变量. 没了来太多能调用类中任何非const成员函数。

很久 const存在*的右侧,const没了来太多修饰指针有三种,即指针有三种是常量。