C++中往往通过使用const,来使数据在一定范围内共享又不能被随意修改。
C++常对象
1.1常对象的一般形式为:
A.Time const t(1,2,3);
B.const Time t(1,2,3);
1.2常对象的数据成员都是常变量而且必须要有初值。
1.3不能调用常对象的非const型的成员函数,即常成员函数。
C++常数据成员
1.1常数据成员的声明。
const int hour;
1.2只能通过构造函数的参数初始化表来对常数据成员的
C++常成员函数
1.1常成员函数的声明。
void get_time() const; //注意const在右边
1.2常成员函数只能引用本类中数据成员的值,而不能修改。
1.3
数据成员 | 非const成员函数 | const成员函数 |
非const的数据成员 | 可以引用,也可以改变值 | 可以引用,不可以改变值 |
const数据成员 | 可以引用不可以改变值 | 可以引用,不可以改变值 |
const对象的数据成员 | 不允许引用和改变值 | 可以引用,不可以改变值 |
A.引用const数据成员的值,修改非const数据成员的值
B.如果要求所有的数据成员都不允许改变,可以使对象const,然后用const成员函数进行引用。
C.如果已定义了一个常对象,只能调用其中的const成员函数。
C++指向对象的常指针
1.1将指向对象的指针变量声明为const型,并使之初始化,这样指针值始终保持指向不便。
1.2 Time * const pointer1=&t1;
1.3往往使用常指针作为函数参数以确保其始终指向同一个对象。
C++指向常对象的指针
1.1 const Time *pointer1=&t1;(可以用*来区别指向对象的常指针和指向常对象的指针)
1.2一个常对象只能用指向常对象的指针来指向它,而不能用一般的指针来指向它。
1.3用指针变量作形参时形参与实参的对应关系
形参 | 实参 | 合法否 | 改变指针所指向变量值 |
指向非const型的指针 | 非const变量的地址 | 合法 | 可以 |
指向非const型的指针 | const变量的地址 | 非法 | / |
指向const型的指针 | const变量的地址 | 合法 | 不可以 |
指向const型的指针 | 非const变量的地址 | 合法 | 不可以 |
C++对象的常引用
1.1通过常引用可以确保对象的值不会改变。如
void fun(const Time &t);
1.2在c++中,经常使用常指针和常引用作为函数的参数,一则防止值被改变,一则是不必建立拷贝,来提高效率。
C++ const型数据的小结
形式 | 含义 |
Time const t1; 或const Time t1 | 常对象,其值在任何情况下都不能改变 |
void Time::fun() const | 常成员函数,可以引用但不能改变本类中的数据成员 |
Time * const p | 指向对象的常指针,p的指向不能改变 |
const Time *p | 指向常对象的指针,不能改变指向对象里面的值 |
Time &t1=t | t1是Time类对象t的引用 |