(一)、vs2017配置boost库
(1)、boost官网是http://www.boost.org/,目前最新的版本是1.65.1,可以到这里下载。下载页面里有Unix和Windows的源码,以及Windows版本的第三方二进制包。下载最新版本的就行。
(2)、下载完成后解压到一个目录,例如我就放到了D:\DevTools\boost_1_67_0,目录结构如下图。
(3)、将上面的文件夹设置为名为BOOST_ROOT的环境变量。
(4)、打开VS 2017 Developer Command Prompt,切换到boost目录,执行bootstrap.bat脚本,如果执行成功的话,会生成b2.exe等几个工具,这样生成工具的工作就完成了。
(注释:)VS 2017 Developer Command Prompt的生成在vs2017的/工具/外部工具生成,网上有相应的文章,非常简单。
(5)、在VS中新建一个C++项目,然后打开项目属性页,然后切换到VC++目录,在包含目录和库目录中分别添加BOOST_ROOT和BOOST_ROOT\libs两个文件夹
。
配置完成后,就可以在项目中使用boost了。当然对于Visual Studio来说,还有更简单的办法,那就是使用NuGet。
注释,教程参考自:https://blog.csdn.net/u011054333/article/details/78648294
(二)、智能指针的使用
#include<iostream>
#include <string>
#include <boost/shared_ptr.hpp>
using namespace std;
class Book
{
public:
Book(string name) :name_(name){
cout << "creating book" << name << "..." << endl;
}
~Book(){
cout << "Destroying book" << name_ << "..." << endl;
}
private:
string name_;
};
int main()
{
//创建Book对象,将其分配给myBook管理,此时其使用计数为1
boost::shared_ptr<Book> myBook(new Book("[1984]"));
//use_count()函数表示判断对象得引用次数
cout << "project mybook: " << myBook.use_count() << ".\n" << endl;
//将mybook的所有权分享给mybook1
boost::shared_ptr<Book> myBook1(myBook);
cout << "project mybook: " << myBook.use_count() << "." << endl;
cout << "project mybook1:" << myBook1.use_count() << ".\n" << endl;
cout << "Reset for 1th time. Begin..." << endl;
//剥夺myBook的引用权
myBook.reset();
cout << "project mybook: " << myBook.use_count() << "." << endl;
cout << "project mybook1: " << myBook1.use_count() << "." << endl;
cout << "Reset 1th time. End ...\n" << endl;
cout << "Reset 2th time. Begin ..." << endl;
//剥夺myBook2的引用权
myBook1.reset();
//发现,在对象所有的引用权都被剥夺后,自动调用了析构函数
cout << "Reset for 2th time. End ..." << endl;
system("pause");
return 0;
}