扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
如果用户从类ClxNotBase派生了一个类,那么在编译阶段他就会得到一个不能访问私有成员函数的错误信息。
当然,你肯定会说:如果把类的构造函数声明为私有的,那么我们就无法构造这个类的对象,那我要这个类还有什么用呢?
是的,你说的很对。不过,我们可以用很简单的方法来解决这个问题。下面是修改过的类ClxNotBase:
用户在要使用类ClxNotBase的时候,就可以调用伪构造函数NewlxNotBase来生成对象。当然,每个伪构造函数都调用了new,这就意味着用户必须在使用完类ClxNotBase的对象后都必须调用delete。但是,释放不用的资源是每个C++程序员的基本素质,这个我们就不用强调了。而且,现在有了智能指针auto_ptr,可以自动删除所指的对象,如果用户知道用智能指针的话,那就更好了。下面是一个例子:
在这种情况下,就不用考虑delete对象的问题。在对象离开作用域的时候,智能指针会自动删除其所指的对象。
濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞閹邦剛鐣洪梺闈浥堥弲婊勬叏濠婂牊鍋ㄦい鏍ㄧ〒閹藉啴鏌熼悜鈺傛珚鐎规洘宀稿畷鍫曞煛閸屾粍娈搁梻浣筋嚃閸ㄤ即宕㈤弽顐ュС闁挎稑瀚崰鍡樸亜閵堝懎濮┑鈽嗗亝濠㈡ê螞濡ゅ懏鍋傛繛鍡樻尭鐎氬鏌嶈閸撶喎顕i渚婄矗濞撴埃鍋撻柣娑欐崌閺屾稑鈹戦崨顕呮▊缂備焦顨呴惌鍌炵嵁鎼淬劌鐒垫い鎺戝鐎氬銇勯弽銊ф噥缂佽妫濋弻鐔碱敇瑜嶉悘鑼磼鏉堛劎绠為柡灞芥喘閺佹劙宕熼鐘虫緰闂佽崵濮抽梽宥夊垂閽樺)锝夊礋椤栨稑娈滈梺纭呮硾椤洟鍩€椤掆偓閿曪妇妲愰弮鍫濈闁绘劕寮Δ鍛厸闁割偒鍋勯悘锕傛煕鐎n偆澧紒鍌涘笧閹瑰嫰鎼圭憴鍕靛晥闂備礁鎼€氱兘宕归柆宥呯;鐎广儱顦伴崕宥夋煕閺囥劌澧ù鐘趁湁闁挎繂妫楅埢鏇㈡煃瑜滈崜姘跺蓟閵娧勵偨闁绘劕顕埢鏇㈡倵閿濆倹娅囨い蹇涗憾閺屾洟宕遍鐔奉伓