摘要: 让我们从一个非常简单的例子开始,如下:int n;这个应该被理解为“declare n as an int”(n是一个int型的变量)。接下去来看一下指针变量,如下:int *p;这个应该被理解为“declare p as an int *”(p是一个int *型的变量),或者说p是一个指向一个int型变量的指针。我想在这里展开讨论一下:我觉得在声明一个指针(或引用)类型的变量时,最好将*(或&)写在紧靠变量之前,而不是紧跟基本类型之后。这样可以避免一些理解上的误区,比如:int* p,q;第一眼看去,好像是p和q都是int*类型的,但事实上,只有p是一个指针,而q是一个最简单的int 阅读全文
posted @ 2012-03-19 15:53 zaleilynn 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 有以下这样3个求加法的函数: 1 int Add(int x,int y) 2 { 3 return x+y; 4 } 5 6 double Add(double x,double y) 7 { 8 return x+y; 9 }10 11 long Add(long x,long y)12 {13 return x+y;14 }它们拥有同一个函数名,相同的函数体,却因为参数类型和返回值类型不一样,所以是3个完全不同的函数。即使它们是二元加法的重载函数,但是不得不为每一函数编写一组函数体完全相同的代码。如果从这些函数中提炼出一个通用函数,而它又适用于多种不同类型的数据,这样会使代码的重用率.. 阅读全文
posted @ 2012-03-19 15:41 zaleilynn 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了控制被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计费降为零,没有对象再需要这个共享的对象,这个对象就自动被销毁了。引用计数智能指针可以分为插入式(intrusive)和非插入式(non-intrusive)两类。前者要求它所管理的类提供明确的函数或数据成员用于管理引用计数。这意味着在类的设计时就必须预见到它将与一个插入式的引用计数智能指针一起工作,或者重新设计它。非插入式的引用计数智能指针对它所管理的类没有任何要求。引用计数智能指针拥有与它所存指针有关的内存的所有权。没有智能指针的帮助,对象的 阅读全文
posted @ 2012-03-19 15:31 zaleilynn 阅读(447) 评论(0) 推荐(0) 编辑
摘要: Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include <string>#include <iostream>#include <boost/shared_ptr.hpp>class implementation{public:~implementation() { std::cout <& 阅读全文
posted @ 2012-03-19 15:22 zaleilynn 阅读(194) 评论(0) 推荐(0) 编辑