上一页 1 ··· 3 4 5 6 7 8 下一页

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 阅读(391) 评论(0) 推荐(0) 编辑

2013年10月1日

C++ 强制类型转换

摘要: 关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_ca... 阅读全文

posted @ 2013-10-01 21:42 theCambrian.cpp 阅读(414) 评论(0) 推荐(0) 编辑

C++中的volatile关键字

摘要: 原文:http://www.cnblogs.com/Chase/archive/2010/07/05/1771700.htmlvolatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 volatile的本意是“易变的”,不过翻译成“直接存取原始内存地址”更为合适。“易变”是因为外在因素引起的,象多线程,中断等,并不是因为用volatile修饰了 阅读全文

posted @ 2013-10-01 21:39 theCambrian.cpp 阅读(235) 评论(0) 推荐(0) 编辑

C++强大背后

摘要: 原文http://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因 阅读全文

posted @ 2013-10-01 20:19 theCambrian.cpp 阅读(182) 评论(0) 推荐(0) 编辑

2013年9月30日

C++学习之智能指针

摘要: ps:原文链接 http://blog.csdn.net/xt_xiaotian/article/details/5714477一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_ 阅读全文

posted @ 2013-09-30 22:30 theCambrian.cpp 阅读(218) 评论(0) 推荐(0) 编辑

C++学习之异常

摘要: 昨晚上无意间看到两篇关于异常的文章,这才再次让我想起来把这个知识点搞清楚,这篇文章全文如下:http://www.360doc.com/content/09/1014/18/59579_7272623.shtml以前从来不在代码中使用C++的异常机制,一是觉得对效率影响太大,二是自己对异常安全性实在是一窍不通,想用也不敢用。看完《exceptional C++》关于异常部分的讨论,才突然有一种豁然开朗的感觉,原来,写出异常安全的代码不是一定要写那些让我浑身不爽的try{...}catch(...){...}代码的。首先,需要弄清楚两个基本概念:异常安全性保证和异常中立性。异常安全性保证就是说你 阅读全文

posted @ 2013-09-30 15:53 theCambrian.cpp 阅读(314) 评论(0) 推荐(0) 编辑

2013年9月29日

C++学习之资源管理的利器RAII

摘要: http://www.cnblogs.com/hsinwang/articles/214663.htmlRAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种程度上说这个名称并没有体现出该惯性法的本质精神,但是作为标准C++资源管理的关键技术,RAII早已在C++社群中深入人心。我记得第一次学到RAII惯用法是在Bjarne Stroustrup的《C++程序设计语言(第3版)》一书中。当讲述C++资源管理时,Bjarne这样写道:使用局部对象管理资 阅读全文

posted @ 2013-09-29 21:56 theCambrian.cpp 阅读(222) 评论(0) 推荐(0) 编辑

C++学习之new & delete

摘要: http://www.cnblogs.com/fly1988happy/archive/2012/04/26/2471099.html1. new与operator newC++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new 的区别。1.1 new operator如下代码:string *ps=new string("memory management");这里所使用的new就是所谓new operator,是由C++语言内建的,就像sizeof那样,不能改变意义, 阅读全文

posted @ 2013-09-29 20:45 theCambrian.cpp 阅读(240) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 下一页

导航