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;
}
浙公网安备 33010602011771号