const
被const修饰的对象,其成员函数未加const修饰时,不能被调用。因为编译系统认为其实非const成员函数。
被const限制的成员函数以及数据成员的访问规则如下:
指向对象的常指针命名方式:
类名 *const 变量名;
如: Time * const pt;
规则: 指针值不可变,指针指向的值是否改变,取决于指向的对象。
指向常变量的指针变量命名方式:
const 类名 *变量名 或 类型名 const *变量名
如: const char c[] = "hello" ; const char *pt = c;
规则:指针变量本身的值可变,指针指向的值不可变;
指向常对象的指针变量命名方式:
const 类名 *变量名 或 类名 const *变量名
如: const Time t1(10, 12, 15) ; Time const *pt = &t1
规则:指针变量本身的值可变,指针指向的值不可变;
static
静态局部变量存储在静态存储区,作用范围仅限于本函数,函数调用结束后不消失而保留原值,下次调用直接使用上次调用结束时的值。且初始化只能在类外。
静态数据成员被所有对象共享,在所有对象之外单独开辟空间存储;
静态数据成员所占空间并不随某个对象的撤消而释放;
用静态的数据成员:可以在同类的多个对象之间实现数据共享。
静态数据成员以及静态成员函数可以不通过类名访问,直接通过作用域访问。
静态成员函数不能处理非静态成员。