创建类的对象的两种不同方式

众所周知,内存的分配方式有三种
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束后在将这些局部变量的内存空间回收。在栈上分配内存空间效率很高,但是分配的内存容量有限。
(3) 从堆上分配的。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。

那么,下面我将介绍一下关于类的对象的创建的两种不同方式。先上代码,眼见为实。

#include <iostream>  
using namespace std;  

class TestNew  
{  
private:  
    int ID;  
public:  
    TestNew(int ID);  
    ~TestNew();  
    void functiion()
    {
        cout<<"对象"<<ID<<"成功调用该函数!"<<endl; 
    }
};  

TestNew::TestNew(int ID)  
{  
    this->ID = ID;  
}  

TestNew::~TestNew()  
{  
    cout<<"对象"<<this->ID<<"执行析构函数"<<endl;  
}  
void Test()  
{  
    TestNew test(1);//创建对象1,不使用new  
    TestNew *pTest = new TestNew(2);//创建对象2,使用new 
    test.functiion();
    pTest->functiion();
    delete pTest; 
}  

int main()  
{  
    Test();
    return 0;
}

执行结果如下:
这里写图片描述

可以看到用第一种方式创建对象时,由于被存储在中,所以当函数调用结束后,程序将自动调用析构函数,而且引用类里的成员函数时,必须用“.”, 而用运算符new来创建对象时,对象将被存储在中,需要程序员自身通过delete运算符来调用析构函数,且引用时必须用“->”。
另外想提醒一下,为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值