﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-缘起</title><link>http://www.cppblog.com/cnsworder/</link><description>Linux OpenGL 嵌入式智能设备 C\C++\Python</description><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 12:48:46 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 12:48:46 GMT</pubDate><ttl>60</ttl><item><title>c++设计中的几种机制 </title><link>http://www.cppblog.com/cnsworder/archive/2012/02/21/166144.html</link><dc:creator>cnsworder</dc:creator><author>cnsworder</author><pubDate>Tue, 21 Feb 2012 08:26:00 GMT</pubDate><guid>http://www.cppblog.com/cnsworder/archive/2012/02/21/166144.html</guid><wfw:comment>http://www.cppblog.com/cnsworder/comments/166144.html</wfw:comment><comments>http://www.cppblog.com/cnsworder/archive/2012/02/21/166144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cnsworder/comments/commentRss/166144.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cnsworder/services/trackbacks/166144.html</trackback:ping><description><![CDATA[<div><p>1、PIMPL</p> <p>&nbsp;&nbsp;&nbsp;   私有化实现。解决头文件依赖，文件修改后整个系统需要重新编译的问题。他实现的是一个简单的桥接模式。在类中指针初始化的空间是固定的，不需要知道其具体  的类型，所有采用前置声明的方式，可以不需要在头文件中引用他的头文件。这样即隐藏了引用类的实现细节，又减少了编译时文件修改后的编译关联性。<br /> </p> <p>2、NVI</p> <p>&nbsp;&nbsp; 提供一个公有的非虚接口函数，将虚函数私有化。实现行为和接口的分离。因为虚函数的多态性，公有非虚函数自然会去调用相应的虚函数实现。通过对虚函数的包装达到对接口与实现分离的效果。<br /> </p> <p>3、RAII</p>  &nbsp;&nbsp;   保证析构函数总是正确被执行。借助函数栈原理，在申明周期结束的时候自动销毁，执行析构。在类的构造函数中申请资源，在析构函数中释放资源。也就是说局部  资源对象实例应该尽量分配在栈上而不是堆上，或者使用智能指针。智能指针使用时本身初始化在栈上，保证了在生命周期区域结束时正确的释放资源。</div><img src ="http://www.cppblog.com/cnsworder/aggbug/166144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cnsworder/" target="_blank">cnsworder</a> 2012-02-21 16:26 <a href="http://www.cppblog.com/cnsworder/archive/2012/02/21/166144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>