在堆中创建对象
来源:互联网 发布:淘宝网魔术道具 编辑:程序博客网 时间: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。
在堆中创建的对象是匿名的,它没有名字,我们无法直接访问它,只能通过指针来访问它。
指针记录了堆中对象的地址,所以只有指针才能找到该对象。
本节我们主要学习如何在堆中创建一个对象,下节将学习如何删除堆中对象。
- 在堆中创建对象
- 如何限制对象在栈或堆中创建对象
- c++在堆中创建对象被对其操作
- 在Java堆中创建对象的全过程
- 在堆中删除对象
- 对象只在堆上创建
- 对象在堆上的创建问题
- c++ 只在堆上创建对象
- C++中在堆中创建对象 和 栈中的不同
- C++ 中只能在堆或栈上创建的对象
- HotSpot 虚拟机在 Java 堆中对象是如何创建、如何布局以及如何访问的?
- new创建对象,对象保存在堆还是栈?
- new创建对象,对象保存在堆还是栈?
- 在堆中创建二维数组
- C++:在堆上创建对象,还是在栈上?
- item26判断对象是否在堆中
- 堆中创建对象/删除对象-析构函数
- 在JavaScript中创建对象
- 在Windows的CMD中如何设置支持UTF8编码?
- Axure多人协作
- iOS7 自定义动画跳转
- android布局详解
- ccc
- 在堆中创建对象
- uva 572
- asp.NET配置
- 在堆中删除对象
- C#文档编辑器
- 【redis源码分析】字典---dict
- 访问堆中的数据成员
- 黑马程序员_Java基础_集合框架工具类
- Windows下获取Android系统源码