Const用法总结

C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:

 

const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
在内存的分配方面,const常量只在第一次使用时分配内存,但是#define却是每次使用的时候都分配一次内存

 

 

一. const 与 指针

  1. char *p = "Hello"; // 非const指针,// 非const数据
  2. const char *p = "Hello"; // 非const指针,// const数据(指向的内容不可以改变)
  3. char * const p = "Hello"; // const指针(指向的地址不能改变),,// 非const数据
  4. const char * const p = "Hello"; // const指针,// const数据

一般来说,你可以在头脑里画一条垂直线穿过指针声明中的星号(*)位置,如果const出现在线的左边,指针指向的数据为常量;如果const出现在线的右边,指针本身为常量;如果const在线的两边都出现,二者都是常量。

 

二. const 变量的初始化

在类中使用const数据成员只能在构造函数的初始化列表中初始化(对于vc编译器)

class myclass
{
private:
const int count;//如果使用const int count=10;是错误的
public:
myclass();
void print(void);
};

 

myclass::myclass():count(15)//const数据成员只能在这个初始化列表中进行,父类数据也是在这里初始化(真正意义的初始化的地方)

 

三. const 与成员函数

1. const放在函数末尾是表示"调用"该方法的"对象实体"在这个方法过程中没有改变,那么我们在这样的函数内"只能"使用const类型的方法或数据.

2. const放在返回值位置的时候表示返回值类型是不可以改变的

 

四. const 与函数参数

const 修饰函数参数,是为了保证传入的数据在该函数内不会被改变。

你可能感兴趣的:(Const)