64,281
社区成员
发帖
与我相关
我的任务
分享
/*************************************************************************
> File Name: test.h
> Author: mz
> Mail:xx@qq.com
> Created Time: Mon 17 Aug 2015 10:34:43 AM CST
************************************************************************/
#ifndef TEST_test_h
#define Test_test_h
#include <memory>
namespace TEST
{
class CTest
{
public:
typedef std::shared_ptr<int> Ptr;
CTest( std::size_t size );
void show();
private:
std::size_t _size;
Ptr _arr;
};// CTest
}// TEST
#endif
/*************************************************************************
> File Name: test.cpp
> Author: mz
> Mail:xx@qq.com
> Created Time: Mon 17 Aug 2015 10:38:45 AM CST
************************************************************************/
#include "test.h"
#include <stdexcept>
#include <iostream>
using std::bad_alloc; using std::cerr; using std::endl;
using std::size_t; using std::cout;
namespace TEST
{
CTest::CTest( size_t size ) try
: _size( size ) , _arr( new int[size] )
{
}catch( const bad_alloc& e )
{
cerr << "bad_alloc caught : " << e.what() << endl;
}
void CTest::show()
{
for( size_t i = 0 ; i != _size ; ++i )
{
cout << _arr.get()[ i ] << " ";
}
cout << endl;
}
}
/*************************************************************************
> File Name: main.cpp
> Author: mz
> Mail:xx@qq.com
> Created Time: Mon 17 Aug 2015 11:19:16 AM CST
************************************************************************/
#include "test.h"
using TEST::CTest;
int main()
{
CTest ct( 10 );
/* 如果构造函数发生异常,处理完异常返回之后,这里没有处理代码,程序一样会当掉
可是真正的异常在构造函数又已经处理过了,那这里应该怎么写?*/
ct.show();
}
#include "test.h"
using TEST::CTest;
int main()
{
std::unique_ptr<CTest> p(new CTest( 10 ));
if(p)
{
p->show();
}
}