2013年10月3日

C++学习之NVI

摘要: 原文:http://www.cnblogs.com/gnuhpc/archive/2012/01/17/2324836.html1.简介在标准C++库中我们可以看到这样的一个现象:6个公有虚函数,并且都是std::exception::what()和其重载。142个非公有虚函数。这样设计的目的何在呢,为什么“多此一举”的把虚函数设置为非公有呢?这就是NVI机制要求的:将虚函数声明为非公有,而将公有函数都声明为非虚——虚拟和公有选其一。2.机制分析程序员常常将基类中的虚函数公有化,来提供一个接口的定义(virtual的功劳)同时提供其实现(具体的一个实现)。class Base{ public: 阅读全文

posted @ 2013-10-03 20:08 theCambrian.cpp 阅读(409) 评论(0) 推荐(1) 编辑

C++学习之Pimpl

摘要: 原文:http://www.cnblogs.com/gnuhpc/archive/2012/06/30/2570761.html1.简介这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这会是个麻烦事儿。Pimpl机制,顾名思义,将实现私有化,力图使得头文件对改变不透明。2.机制分析首先,我们先看看不使用这个机制的一个实现: 1: // MyBase.h 2: class MyBase { 3: public: 4: int foo(); ... 阅读全文

posted @ 2013-10-03 19:37 theCambrian.cpp 阅读(250) 评论(0) 推荐(0) 编辑

C++学习之allocator

摘要: 原文地址:http://blog.csdn.net/justaipanda/article/details/7790355C++为我们提供了安全的内存空间申请方式与释放方式,但是new与delete表达式却是把空间的分配回收与对象的构建销毁紧紧的关联在一起。实际上,作为与C语言兼容的语言,C++也为我们提供了更加底层的内存操作方式的。谈C++就离不开STL,考虑一下vector类的机制,为了高效率的增加与删除元素,它并不会在我们每次进行添加或删除操作时进行内存的分配与回收,而是会提前预留下一片空间。我们通过size函数可以得到容器内元素的个数,通过capacity函数则可以得到该容器的实际大小 阅读全文

posted @ 2013-10-03 16:34 theCambrian.cpp 阅读(392) 评论(0) 推荐(0) 编辑

导航