shared_ptr_rv_test.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 111 行
CPP
111 行
//// shared_ptr_rv_test.cpp//// Copyright (c) 2007 Peter Dimov//// Distributed under the Boost Software License, Version 1.0.// See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt//#include <boost/shared_ptr.hpp>#include <boost/detail/lightweight_test.hpp>struct X{ static long instances; X() { ++instances; } ~X() { --instances; } static boost::shared_ptr<X> create() { return boost::shared_ptr<X>( new X ); }private: X( X const & ); X & operator=( X const & );};long X::instances = 0;int main(){ BOOST_TEST( X::instances == 0 ); { boost::shared_ptr<X> p( X::create() ); BOOST_TEST( X::instances == 1 ); p = X::create(); BOOST_TEST( X::instances == 1 ); p.reset(); BOOST_TEST( X::instances == 0 ); p = X::create(); BOOST_TEST( X::instances == 1 ); } BOOST_TEST( X::instances == 0 ); { boost::shared_ptr<X const> p( X::create() ); BOOST_TEST( X::instances == 1 ); p = X::create(); BOOST_TEST( X::instances == 1 ); p.reset(); BOOST_TEST( X::instances == 0 ); p = X::create(); BOOST_TEST( X::instances == 1 ); } BOOST_TEST( X::instances == 0 ); { boost::shared_ptr<void> p( X::create() ); BOOST_TEST( X::instances == 1 ); p = X::create(); BOOST_TEST( X::instances == 1 ); p.reset(); BOOST_TEST( X::instances == 0 ); p = X::create(); BOOST_TEST( X::instances == 1 ); } BOOST_TEST( X::instances == 0 ); { boost::shared_ptr<void const> p( X::create() ); BOOST_TEST( X::instances == 1 ); p = X::create(); BOOST_TEST( X::instances == 1 ); p.reset(); BOOST_TEST( X::instances == 0 ); p = X::create(); BOOST_TEST( X::instances == 1 ); } BOOST_TEST( X::instances == 0 ); return boost::report_errors();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?