常对象
常对象必须有初值。
常对象中的非const型的成员函数(除了由系统自动调用的隐式的构造函数和析构函数)不能被调用。在常对象中的数据成员定义前加上mutable 就可以被修改了,如mutable int count;
常对象成员
只能通过构造函数的参数初始化表对常数数据成员的初始化。
在类外定义构造函数,应写出:
Time:::Time(int h):hour(h){};
常成员函数只能引用本类中的数据成员,而不能修改它们。
void get() const ;//const是函数类型的一部分。
数据成员
非const的数据成员
Const数据成员
Const对象的数据成员
注意:常成员函数不能调用另一个非const 成员函数
定义指向常变量的指针的一般形式:
Const 类型名 *指向变量名
(1)
(2)
(3)
形参
指向非const型的变量的指针
指向非const型的变量的指针
指向const型的变量的指针
指向const型的变量的指针
一个变量的引用就是变量的别名。引用名和变量名指向同一段内存单元。调用函数就是把实参的地址传给形参。
对象的动态建立和释放
Box *p = new Box ;//成功就返回一个指向Box的指针,失败返回0
delete p ;释放
对象的赋值: 对象名1 = 对象名 2;
对象的复制:类名
或者:类名 对象2 = 对象1;
静态数据成员
在类中使用static 定义,静态数据成员的值对所有对象都是一样的,所有对象是共享的。
(1)
(2)
(3)
一般初始化形式为:数据类型
如:int Box::height = 10;
不需要加static。
如果未初始化,则自动赋值为0.
(4)
对象名。数据成员名
类名::数据成员名
(5)
静态成员函数:static int get();//注意没有this指针
静态成员函数不能访问非静态数据成员。
Cout<<height<<endl;
Cout<<width<<endl;
应该为Cout<<a。width<<endl;
养成好习惯:只用静态成员函数访问静态数据成员,不引用非静态数据成员