首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Const用法小结

2012-10-16 
Const用法总结C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:?c

Const用法总结

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

?

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

?

?

一. const 与 指针

    char *p = "Hello"; // 非const指针,// 非const数据
    const char *p = "Hello"; // 非const指针,// const数据(指向的内容不可以改变)
    char * const p = "Hello"; // const指针(指向的地址不能改变),,// 非const数据
    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 修饰函数参数,是为了保证传入的数据在该函数内不会被改变。

热点排行