Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62681
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-26 16:03
文章分类

全部博文(114)

文章存档

2015年(114)

我的朋友

分类: C/C++

2015-02-26 16:52:14

.常对象:

1.定义常对象的一般形式为

类名 const 对象名[(实参表列)];

也可以把const写在最左面:

const 类名 对象名[(实参表列)];

二者等价。

2. 编译系统只检查函数的声明,只要发现调用了常对象的成员函数,而且该函数未被声明为const,就报错,

3. 常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值。

4. 可以将对象的成员声明为const,包括常数据成员和常成员函数。

5. 常数据成员的值是不能改变的。有一点要注意: 只能通过构造函数的参数初始化表对常数据成员进行初始化。不能采用在构造函数中对常数据成员赋初值的方法。

6. 一般的成员函数可以引用本类中的非const数据成员,也可以修改它们。如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们,例如只用于输出数据等。如 void get_time( ) const;           //注意const的位置在函数名和括号之后

7. 如果已定义了一个常对象,只能调用其中的const成员函数,而不能调用非const成员函数,不要误认为常对象中的成员函数都是常成员函数.

. 指向对象的常指针

1. 将指针变量声明为const型,这样指针值始终保持为其初值,不能改变。

定义指向对象的常指针的一般形式为

类名 * const 指针变量名;

2. 指向对象的常指针变量的值不能改变,即始终指向同一个对象,但可以改变其所指向对象(t1)的值。

. 指向常对象的指针变量

1. 指向常变量的指针变量可以指向const和非const型的变量,而指向非const型变量的指针变量只能指向非const的变量。

2. 如果一个对象已被声明为常对象,只能用指向常对象的指针变量指向它,而不能用一般的(指向非const型对象的)指针变量去指向它。

3. 请记住这样一条规则: 当希望在调用函数时对象的值不被修改,就应当把形参定义为指向常对象的指针变量,同时用对象的地址作实参(对象可以是const或非const)。如果要求该对象不仅在调用函数过程中不被改变,而且要求它在程序执行过程中都不改变,则应把它定义为const型。

4. C++面向对象程序设计中,经常用常指针和常引用作函数参数。这样既能保证数据安全,使数据不能被随意修改,在调用函数时又不必建立实参的拷贝。用常指针和常引用作函数参数,可以提高程序运行效率。

5.const型数据成员小结:

 

形式

含义

Time const t1;

t1是常对象,其值在任何情况下都不能改变

void Timefun( )const

funTime类中的常成员函数,可以引用,但不能修改本类中的数据成员

Time * const p;

 

 

p是指向Time对象的常指针,p的值(p的指向)不能改变

const Time *p;

 

p是指向Time类常对象的指针,其指向的类对象的值不能通过指针来改变

Time &t1=t;

 

t1Time类对象t的引用,二者指向同一段内存空间

 

 

 

阅读(177) | 评论(0) | 转发(0) |
0

上一篇:拷贝构造函数详解

下一篇:C++中const详解

给主人留下些什么吧!~~