对象生存方式

          在c++中,有四中方法可以产生一个对象。

         第一种方法是在堆栈(stack)中产生它:

         void   MyObject()

          {

                     Typename    object ;                //在堆栈中产生object对象

            }

        第二种方法是在堆(heap)中产生它:

        vvoid   MyObject()

          {

                    .............................

                     Typename *   object = new   Typename ( ) ;                //在堆中产生object对象

            }

         第三种方法是产生一个全局对象(同时也必然是一个静态对象):

            Typename    object ;       //在任何函数范围之外做此操作 

        第四种方法是产生一个局部静态对象:

          void   MyObject()

          {

                     static   Typename    object ;                //在函数范围(scope)之内的一个objec静态t对象

                    ............................

            }

          不论哪种做法C++都会产生一个针对Typename构造函数的调用操作。前两种情况,C++在配置内存(来自static或heap)之后立刻产生一个隐藏的构造函数的调用。第三种情况,由于对象实现于任何“函数活动范围“之外,所以构造函数操作必须依靠startup代码(更早于程序进入点main或WinMain执行起来的代码)帮忙,由C++编译器提供。

         第四中情况(局部静态对象)相当类似C语言中的静态局部对象,只会有一个实例(instance)产生,而且在固定的内存上(既不是stack也不是heap)。它的构造函数在控制权第一次转移带其声名处时被调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值