摘要:
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用: #include <string>#include <iostream>#include <boost/scoped_ptr.hpp>class implementation{public:~implementation() { std::cout <<"destroying implementation\n"; }void do_something() { s 阅读全文
摘要:
复制控制一、复制控制类能控制复制,赋值,撤销该类的对象时的动作,分别通过下面的成员函数:1.复制构造函数:具有单个形参,该形参是对该类类型的引用(通常用const修饰);2.赋值操作符3.析构函数:不管有没显示定义,编译器都自动执行类中非static数据成员的析构函数这三个函数就成为复制控制。二.为什么要研究复制控制如果没有显示地定义复制构造函数和赋值操作符,编译器会为我们定义。但是编译器合成的复制控制函数只做必需的工作,某些类如果依赖于默认的定义会导致错误,例如类具有指针成员。难点:识别何时需要覆盖默认版本,定义自己的复制构造函数所以有时候要自定义复制构造函数,定义复制构造函数跟构造函数是一 阅读全文
摘要:
一.场景:两个类:Folder类:表示一个目录,有一些指针成员指向该目录下的文件File类:表示一个文件,(1)有一个string成员存储文件内容(2)有Folder类型的成员指针集指向存有该文件的目录(3)有一个save()和remove()方法分别用于保存和移动。功能:(1)在创建的时候传入文本初始化文件的文本(2)在保存的时候传入目录指定文件所在的目录(可保存在多个目录)(3)要求能复制、赋值、删除文件类如图:(简化)二.数据结构1.Folder类:只要有一些指向File类的指针即可2.File类:set<Folder*>:指针集来存储所在的目录stringcontent:存 阅读全文
摘要:
c++ 之类的前置声明<至intel转载>c++ 之类的前置声明刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样:一编译,就出现了一个互包含的问题了,这时就有人跳出来说,这个问题的解决办法可以这样,在a.h文件中声明类B,然后使用B的指针。然后,问题就解决了。但是,有人知道问题是为什么就被解决的吗,也就是说,加了个前置声明为什么就解决了这样的问题。下面,让我来探讨一下这个前置声明。类的前置声明是有许多的好处的。我们使用前置声明的一个好处是,从上面看到,当我们在类A使用类B的 阅读全文