首页 > 代码库 > const总结

const总结


1.常对象

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

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

    对象被声明为常对象,则不能调用该对象的非const型的成员函数;

    常成员函数可以访问常对象中的数据成员,但是不允许修改你常对象中的数据成员的值。

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


2.常对象成员

   1> 常数据成员

         只能通过构造函数的参数初始化表对常数据成员进行初始化。在类体中声明了某一个常数据成员后,该类所有对象中的该数据成员的值都是不能改变的,但是不同对象中的该数据成员的值可以是不同的。

    2> 常成员函数

          常成员函数可以访问常对象中的数据成员,但是不允许修改你常对象中的数据成员的值。常成员函数可以引用const数据成员,也可以是非const的数据成员。

           常成员函数不能调用另一个非const成员函数


3.指向对象的常指针

   类名 * const 指针变量名 = 对象地址;  

   定义的时候就需要初始化,这样的指针始终保持为初值,不能改变,即指向始终不变。但是可以修改所指向对象中数据成员的值。常用做形参,目的是不允许函数执行过程中改变指针变量的值。


4.指向常对象的指针变量

   const  类名 *指针变量;

   变量声明为常变量,只能用指向常变量的指针变量指向它,而不能用一般的(指向非const型变量的)指针变量去指向它;

    const char c[] = "boy"; //定义const的数组

    const char *p;             //定义p 为指向const型的char变量的指针变量。

    p = c;                          //合法p指向常变量。

    char *p2 = c;               //非法,p2不是指向常变量的指针变量。

    指向常变量的指针变量除了可以指向常变量外,还可以指向未被声明为const的变量,但是不能通过此指针变量修改该变量的值。

    char c = ‘a‘;

    const char *p;   //定义p 为指向const型的char变量的指针变量

    p = &c;              //p指向非const的变量c

    *p = ‘b‘;              //非法,不能通过p修改变量c的值。

    如果定义了一个指向常对象的指针变量,并使它指向一个非const的对象,则指向的对象是不能通过指针来修改

        


用指针变量作形参和实参的对应关系
形参实参合法否改变指针所指的变量的值
指向非const型的指针指向非const型的指针合法可以
指向非const型的指针指向const型的指针非法/
指向const型的指针指向非const型的指针合法不可以
指向const型的指针指向const型的指针合法不可以

 可以看出:指向常变量的指针变量可以指向const跟非const的变量,而指向非const的变量的指针变量指针指向非const的变量。


总结

形式含义
Time const  t;或const Time t ;t 是常对象,其值在任何情况下都不能改变
void Time::fun() constfun是Time类的常成员函数,可以引用但不能修改本类中数据成员
Time * const p;p是Time类对象的常指针,p的值(即p的指向)是不能改变的
const Time *p;p是指向Time类对象的指针变量,其所指向的类对象不能通过p来修改
Time &t1 = t; t1 是Tme类对象t的引用,t和t1指向同一段内存空间

  


const总结