A持有B的指针是指,把B作为A的成员变量。如果你指的是这个意思,那么:从内存的角度来说,前者:B对象一直跟随A的存在而存在,只要A还在,B就不能被释放。后者:由于B是传进来的所以B可以在必要的时候被释放,跟A是否还在没关系。从使用的角度来说,怎么方便怎么用。我只举一些简单的例子,比如有一个绘图类Graphicsg;并创建了几个颜色的画刷Brushred,yellow,blue,green;你希望用不同颜色的画笔来画几条直线,你自己来体会一下:----前者----g.setBrushred;g.drawLinex1,x2,y1,y2;g.setBrushblue;g.drawLinex3,x4,y3,y4;g.setBrushgreen;g.drawLinex5,x6,y5,y6;g.setBrushyellow;g.drawLinex5,x6,y5,y6;----后者----g.drawLinered,x1,x2,y1,y2;g.drawLineblue,x3,x4,y3,y4;g.drawLinegreen,x5,x6,y5,y6;g.drawLineyellow,x5,x6,y5,y6;以上例子是支持后者的,因为要调用的Brush的函数虽然相同,但会用到不同的Brush对象。另外再举个栗子,比如有一个记录日志的类Loggerlogger;还有数据库连接的类DBConnection,你希望怎么用呢:----前者----DBConnectionconn=newDBConnectionlogger;RecordSetrs=conn.query"select*frommytable";conn.query"deletefrommytable";conn.query"updatetable1setxxx=3wherexxxx";...----后者----DBConnectionconn=newDBConnection;RecordSetrs=conn.query"select*frommytable",logger;conn.query"deletefrommytable",logger;conn.query"updatetable1setxxx=3wherexxxx",logger;以上例子是支持前者的,因为用到的logger对象不会变,不需要每次都传进去。
龚少锋2019-12-22 00:08:23