堆中创建对象:Human *p;定义一个Human类型的指针,*p=new Human;初始化Human指针的内存地址。
堆中删除对象:delete p;
访问对象的数据成员和函数,使用成员运算符. (*p).print();或者是p->print(); 为使用方便,用->来访问指针对象的成员函数。
如果在构造函数中开辟一块新内存存放的数据为999,i=new int(999)由指针i来保存, 如果不销毁会造成内存的泄露,所以在析构函数中~Human{delete i}当销毁对象的同时会释放构造函数中的内存。
表明构造函数也可以开辟堆中的空间,在实际中堆中创建的对象通过成员指针再创建新空间来保存数据并没有什么意义,因为在堆中对象创建时已经为他所有数据成员提供了保存空间。
栈中的对象在超出作用域的时候自行的释放该对象占用的内存空间,堆中的对象需要程序员自行堆占用的成员进行释放,否则该内存直到程序结束的时候才会被回收。
this指针保存对象的内存地址,因此可以通过this指针来读取某个对象的数据,this变量保存的对象的地址,this指针指向的是对象的指针,this指针的创建和删除由编译器来完成。
删除一个指针只释放该指针指向的内存空间,不会删除指针,这个指针还存在,并且指向原来的内存空间,这时如果再次尝试使用该指针就会发生错误。
class Human{ pulic void Human(){this->指针的内存地址}} Human h; Human b两个对象的内存地址不同,