C++基本功:从一个左右值问题出发,侃侃C++的引用[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 redstar81 的 blog

/*                         //在函数结束生命周期后,返回的地址将不可用.
/*
/*                   3.不好的对普通对象的引用
/*                     class mclass;
/*                     mclass* mcptr;
/*                     mcptr = new mclass(param);
/*                     if(!mcptr) merror("constructing object failed.");
/*                     mclass& mcref = *mcptr;
/*                     也许上面的引用可以使你感觉更舒服的使用mclass: 如
/*                      mcref.function();而不必
/*                     (*mcptr).function();或mcptr->function();
/*                     可是相比之下,一个严重的问题来了:内存泄露..
/*                     因为引用不像指针那样明显:你很可能忘记:delete &mcref;

/*
/*                  4.对对象相关的参数的引用               
/*                    void fook(param1)     
/*                    {
/*                             param->function(noramlparam);
/*                    }
/*                    上面的程式中,我想传递一个对象的地址,从而使用对象的成员函
/*                    数..怎么办?
/*                     
/*                    void fook(mclass* mcpptrparam){};
/*                    恩,可以.     
/*                    用一用:
/*                    mclass mcptr = new mclass(param);
/*                    fook(mcptr);
/*                    还有呢:
/*                    mclass mcobj;
/*                    fook(&mcobj);
/*
/*                    当然你也可:
/*                    void fook(mclass& mcrefparam){};
/*                    这样引用的对象可在全局数据区、堆栈、栈
/*                  5.当然引用真的就是为了方便吗?.......
/*                    其实正如它在函数返回值里的应用,可由编译器识别为地址,在作

本文关键:C++、引用
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top