指向对象的常指针
Time *const pt1;//Time为已声明的类
此时将pt1声明为const型,则指针值始终保持为其初值不改变。
一般形式: 类名 *const 指针名;
指向常对象的指针变量
const 类型名 *指针变量名
1)不能通过该指针变量去修改其所指向的变量,只能引用。
2)若变量已被声明为常变量则必须用指向常变量的指针变量来指向它。
const型数据小结
Time const t1;
t1为常对象,无论何时都不能改变
Time:: fun()const;
fun作为Time类中的常成员函数,可以引用,但不能修改其数据成员的值
Time *const p;
p为指向Time对象的常指针,p的指向不能改变
const Time *p;
p为指向Time类常对象的指针,不能通过p来修改Time的对象的值,但可以改变其指向
Time &t1=t2;
指t1作为Time类对象t2的引用,二者指向同一内存空间
对象的动态建立和释放
动态建立对象:
new Box; //Box为已定义类
此时该对象称为 无名对象
在建立该对象时new会返回其存放空间的首地址,用户可通过此进行访问对象
而c++也允许在建立对象时进行初始化:
Box *pt = new Box(1,2,3);
若无法开辟所需的内存空间,则new会返回一个0指针值。
可使用delete进行释放内存空间:
delete pt;
对象的赋值和复制
“=“实现两个同类对象之间的赋值,即将一个对象的成员值一一复制给另一个对象的对应成员。
对象赋值的一般形式: 对象名1 = 对象名2
对象复制的一般形式: 类名 对象2(对象1); //用对象1复制出对象2
复制对象时调用一个特殊构造函数——复制构造函数,可将实参对象的各成员值一一赋给新的对象中对应的成员
静态数据
可以使得数据成员为所有同类对象所共有
静态数据成员
以关键字static开头,不属于某一个对象,而且静态数据成员是在所有对象之外单独开辟空间,类中只要定义了该数据,即使不定义对象,也为其分配空间,并可以被引用,在一个类中可以有一个或多个静态数据成员。静态数据成员可以进行初始化,但只能在类体外进行,
一般形式: 数据类型名:: 静态数据名=初值;
不必在该语句中加入static