C++:与const有关的三个函数

ZDNet软件频道 时间:2002-12-26 作者:BUILDER.COM |  我要评论()
本文关键词:
你也许有常量的概念并会用关键字const声明一个变量为常量,但是你知道const除了声明常量外,还可以声明const指针和const成员函数。本文将讨论const对象是如何建立、const对象的用途以及他们的语法。

你也许有常量的概念并会用关键字const声明一个变量为常量,但是你知道const除了声明常量外,还可以声明const指针和const成员函数。本文将讨论const对象是如何建立、const对象的用途以及他们的语法。

Const声明

仅仅用一个关键字就可以声明三种截然不同的结构,所以const声明常常让人混淆。让我们仔细看看这些这三种不同的const结构。

Const对象

当你把某个对象定义为const类型(在这里“对象”一词用的是它的广义语义,例如保存一个变量或者类对象的一段内存)之前,你需要确保程序不会再修改它。Const声明必须包括合适的初始化。代码清单A中包含有不同const对象的实例。

Const指针

如果把一个指针定义为const类型,那么程序就不能再让它指向一个新的地址。不过const指针所指向的对象仍可以修改,如代码清单B所示。

Const成员函数

一个类对象的状态由它的非静态数据成员组成。类中不需要修改对象状态的成员函数应该定义为const类型。你可以在类的成员函数的参数表后面加上关键字const来声明它为const函数。例如:

class Person{
public:
 int getAge() const {return age;} //const成员函数
private:
 int age;
};

注意const成员函数是约束语法设计(the Design by Contract idiom)的一个重要的组成部分。Const成员函数确保了编程者承诺要实现的功能(如,保持对象的状态不变)由编译器强制实现。任何试图从内部修改const成员的举动都会导致编译时错误的产生:

 
  int Person::getAge() const
{
 return ++age; //编译时出错
}

另外,const声明可以证明函数的行为。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134