PersonImpl.h
#include <memory>
// class Date;
// class Address;

class PersonImpl
{
private:
	std::string personName;
	std::string personBirthday;
	std::string personAddress;
public:
	PersonImpl(void);
	PersonImpl(const std::string &name,const std::string &birthday,const std::string & addr);;
	std::string name(){return personName;};
	std::string birthday(){return personBirthday;};
	std::string address(){return personAddress;};
	~PersonImpl(void);
};

 PersonImpl.cpp

#include "stdafx.h"
#include "PersonImpl.h"


PersonImpl::PersonImpl(void)
{
}

PersonImpl::PersonImpl( const std::string &name1,const std::string &birthday1,const std::string & addr )
	:personName(name1),personBirthday(birthday1),personAddress(addr)
{

}


PersonImpl::~PersonImpl(void)
{
}

 Person.h

#pragma once
#include <string>
#include <memory>

class PersonImpl;
class Date;
class Address;



class Person
{
private:
	std::tr1::shared_ptr<PersonImpl> pImpl;
public:
	Person(void);
	Person(const std::string &name,const std::string &birthday,const std::string &addr);
	std::string name() const;
	std::string birthday() const;
	std::string address() const;

	~Person(void);
};

 

Person.cpp
#include "stdafx.h"
#include "Person.h"
#include "PersonImpl.h"

Person::Person(void)
{
}

Person::Person( const std::string &name,const std::string &birthday,const std::string &addr )
	:pImpl(new PersonImpl(name,birthday,addr))
{

}


Person::~Person(void)
{
}

std::string Person::name() const
{
	return pImpl->name();
}

std::string Person::birthday() const
{
	return pImpl->birthday();
}

std::string Person::address() const
{
	return pImpl->address();
}

 

 

test.cpp

// Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include "Person.h"

int _tmain(int argc, _TCHAR* argv[])
{
	Person aa("Kate","1991-01-18","XiaoGan");
	std::cout<< aa.name()<<std::endl
		<<aa.birthday()<<std::endl
		<<aa.address()<<std::endl;

	return 0;
}

 

posted on 2014-10-20 11:05  风云逸  阅读(72)  评论(0)    收藏  举报