25、堆对象
a.在程序中运行过程中根据需要可以随时建立或删除的对象。
b.堆对象运算符:new、delete
c.new运算符
new创建数组:
new <类型名> [<算术表达式>]
例如:
A *ptr;
ptr = new A[5];
1.使用new创建对象数组或一般数组时,不能为该数组指定【初始值】,
其初始值为【缺省值】。
2.使用new[]创建对象数组时,类中必须说明缺省构造函数;
d.delete运算符
功能:删除用new创建的对象或一般类型的指针;
注意事项:
1.必须用于由运算符new返回的指针;
2.该运算符也适用于空指针(即其值为0的指针);
3.对一个指针只能使用一次delete操作;
4.指针名前只用一对方括号符([]),并且不管所删除数组的维数,忽略
方括号内的任何数字;
#include"aa.h"
void main()
{
AA *ptr;
ptr = new AA[2];
ptr->Set(1,2);
ptr[1].Set(5,6);
ptr[0].Print();
ptr[1].Print();
delete[] ptr;
}
总结:
a.new相当于c语言中的malloc函数,delete相当于free。
b.ptr是一个对象指针,而ptr[i]为一个对象,所以取成员时用->。
a.在程序中运行过程中根据需要可以随时建立或删除的对象。
b.堆对象运算符:new、delete
c.new运算符
new创建数组:
new <类型名> [<算术表达式>]
例如:
A *ptr;
ptr = new A[5];
1.使用new创建对象数组或一般数组时,不能为该数组指定【初始值】,
其初始值为【缺省值】。
2.使用new[]创建对象数组时,类中必须说明缺省构造函数;
d.delete运算符
功能:删除用new创建的对象或一般类型的指针;
注意事项:
1.必须用于由运算符new返回的指针;
2.该运算符也适用于空指针(即其值为0的指针);
3.对一个指针只能使用一次delete操作;
4.指针名前只用一对方括号符([]),并且不管所删除数组的维数,忽略
方括号内的任何数字;
#include"aa.h"
void main()
{
AA *ptr;
ptr = new AA[2];
ptr->Set(1,2);
ptr[1].Set(5,6);
ptr[0].Print();
ptr[1].Print();
delete[] ptr;
}
总结:
a.new相当于c语言中的malloc函数,delete相当于free。
b.ptr是一个对象指针,而ptr[i]为一个对象,所以取成员时用->。