C++类的实例化方法

实例化:是指创建一个对象的过程

C++中类的实例化有两种方式——在栈中实例化和在堆中实例化

在栈中实例化为静态分配内存,不需要手动回收,超出内存系统报错。例如:Student a或者Student a[3],使用“.”操作符,声明即调用了构造函数(已分配了内存);

在堆中实例化为动态分配内存,需要使用delete回收。例如:Student* a = new Student()或者Student* a = new Student[3],使用“->”操作符,()相当于调用构造函数,如果存在默认的构造函数时,有时候会省略();

Student是直接访问一个对象
Student*是间接访问一个对象,因为通过了一个指针作媒介。

然而什么时候用哪一种方法呢?
1.申请对象数量不确定时
2 需要空间较大时,例如:
你可以定义一个数组 BYTE pBuff[4000*1024]; 用来存放文件数据
这样如果文件很小就会浪费内存空间,文件很大则文件数据不能全部读出。所以在读文件的时候需要根据文件的size来开辟一块内存
BYTE *pBuff = new BYTE[size]使这块内存刚刚好可以存放文件数据
像这种情况就需要new 了,不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数 传递占用的资源就太大了。

3.需要用类实现多态性
这个主要是在用类的继承特性的时使用

4.需要跨作用域的时候采用new的方法,只在一个函数内使用的对象采用直接访问的方法即可。

你可能感兴趣的:(C++类的实例化方法)