GCC4.3 开始了c++0x的实现 新的基本库和语言特性
下面是我对于shared_ptr的理解所写的sample同时还用到了Variadic templates
#include <c++0x_warning.h>
#include <tr1/array>
#include <tr1/tuple>
#include <tr1/memory>
#include <tr1/functional>
#include <string>
#include <iostream>
#include <typeinfo>
using namespace std;
using namespace tr1;
typedef std::tr1::shared_ptr<char> char_p;
typedef std::tr1::shared_ptr<wchar_t> wchar_tp;
typedef std::tr1::shared_ptr<short> short_p;
typedef std::tr1::shared_ptr<int> int_p;
typedef std::tr1::shared_ptr<long> long_p;
typedef std::tr1::shared_ptr<float> float_p;
typedef std::tr1::shared_ptr<double> double_p;
class sample : public std::tr1::enable_shared_from_this<sample> {
private:
std::string m_value;
protected:
typedef std::tr1::enable_shared_from_this<sample> base;
public:
void setValue(const std::string& o){m_value=o;}
std::string getValue(){return m_value;}
sample() {
}
sample(const sample& other) :
base(other) {
m_value=other.m_value;
}
sample(std::string s):m_value(s){}
sample(const char* buff,size_t len):m_value(buff,len){}
sample& operator =(const sample& other) {
base::operator =(other); // explicit call to assignment operator
m_value=other.m_value;
return *this;
}
};
typedef std::tr1::shared_ptr<sample> sample_p;
template<typename T,typename Args>
std::tr1::shared_ptr<T> New(Args args) {
return std::tr1::shared_ptr<T>(new T(args));
}
int main(int argc, char **argv) {
int_p ip1=New<int>(10);
int_p ip2=New<int>();
int_p ip3=New<int>(*ip1);
long_p ipl1=New<long>();
cout<<"ip1:"<<*ip1<<'\n';
cout<<"ip2:"<<*ip2<<'\n';
cout<<"ip3:"<<*ip3<<'\n';
std::string s="Welcome C++0x!";
sample_p sp1=New<sample>();
cout<<"This is sp1 "<<sp1->getValue()<<'\n';
sample_p sp2=New<sample>("This is sp2");
cout<<"This is sp2 "<<sp2->getValue()<<'\n';
sample_p sp3=New<sample>(s.c_str(),s.size());
sample_p sp4=New<sample>(*sp3);
sample_p sp5(sp3);
sp3->setValue("Now it is sp3");
cout<<"This is sp3 "<<sp3->getValue()<<'\n';
cout<<"This is sp4 "<<sp4->getValue()<<'\n';
cout<<"This is sp5 "<<sp5->getValue()<<'\n';
return 0;
}
posted on 2008-05-22 16:05
zarra 阅读(204)
评论(0) 编辑 收藏