在堆中创建对象

来源:互联网 发布:淘宝网魔术道具 编辑:程序博客网 时间:2024/05/22 02:25

我们既然可以在堆中保存变量,那么也就可以保存对象,我们可以将对象保存在堆中,然后通过指针来访问它。

 

#include <iostream>

using namespace std;

int main()

{

     Human *p;

     p=new Human;

     return 0;

}

 

第一行定义了一个Human类的指针p,第二行使用new创建一块内存空间,同时又调用了Human类的默认构造函数来构造一个对象,它所占用的内存大小根据Human类对象的成员变量来决定,假如该类有两个int型成员变量,那么该对象占用为2乘以4等于8个字节。构造函数一般都是在创建对象时被自动调用,它的作用就是初始化该对象的成员数据。本行的右半部分创建一个对象完毕后,跟着将该对象的内存地址赋给左边的指针变量p

 

这两行语句也可以合并为一句。

 

#include <iostream>

using namespace std;

int main()

{

     Human *p=new Human;

     return 0;

}

 

在定义一个Human类指针p的同时将它的值初始化为新建Human类对象的内存地址。

 

我们来看实例程序。

 

#include <iostream>

using namespace std;

class Human

{

   public:

      Human(){cout<<"构造函数执行中......\n";i=999;}

private:

      int i;

};

int main()

{

     Human *p=new Human;   //使用new Human在堆中创建一个类Human的对象。

     return 0;

}

 

由于创建对象时会自动调用类的构造函数来初始化对象的成员数据,因此这里调用第6行的构造函数,调用的结果是将i初始化为999,并输出了一行汉字:“构造函数执行中......”。

 

12行的右半部分在堆中创建对象完毕后,就会返回该对象的地址,这个地址赋给了左边的指针变量p

 

在堆中创建的对象是匿名的,它没有名字,我们无法直接访问它,只能通过指针来访问它。

 

指针记录了堆中对象的地址,所以只有指针才能找到该对象。

 

本节我们主要学习如何在堆中创建一个对象,下节将学习如何删除堆中对象。

0 0
原创粉丝点击