c++类型-const的使用

来源:互联网 发布:c语言break跳出if 编辑:程序博客网 时间:2024/06/16 17:30

const用法小结

 

1.定义const对象和指针

 

1.1全局作用域

在全局作用域声明的const对象是该文件的局部变量,在别的文件使用时必须用extern

 

1.2 类作用域

(1)const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。

(2)const 数据成员的初始化只能在类构造函数的初始化表中进行

(3)const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

 

1.3 指针

(1) 指针本身是常量不可变
(
char*)const pContent;
const (char*) pContent;


(2)指针所指向的内容是常量不可变
const (char)*pContent;
(
char) const *pContent;

 

(3)两者都不可变
const char*const pContent;


还有其中区别方法:
沿着
*号划一条线,
如果const位于
*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于
*的右侧,const就是修饰指针本身,即指针本身是常量。

 

2.const函数

 

const函数又称为常成员函数,当函数不改变成员对象的值时可以将函数声明为const函数。

 

3.修饰函数参数

 

(1)如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

(2)如果输入参数以值传递的方式传递对象,则宜改用“const & ”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。

 

4.修饰函数返回值

 

const修饰函数返回值其实用的并不是很多,它的含义和const修饰普通变量以及指针的含义基本相同。

 

5.const与#define的比较

 

C++可以用const定义常量,也可以用#define定义常量,但是前者相比后者有如下优点

(1)const常量具有数据类型,编译器可以对前者进行类型检查。

(2)有些调试工具能够对const对象进行调试,但是不能对#define对象进行调试

原创粉丝点击