*Effective C++ 31. Minimize complilation dependencies between files(handle class & interface class)
来源:互联网 发布:拉货软件 编辑:程序博客网 时间:2024/05/16 04:56
I. Handle classes
#include <string>#include <memory>class PersonImpl;class Date;class Address;class Person {public: Person(const std::string& name, const Date& birthday, const Address& addr); std::string name() const; std::string birthDate() const; std::string address() const;private: std::tr1::shared_ptr<PersonImpl> pImpl;};
#include "Person.h"#include "PersonImpl.h"class RealPerson;Person::Person(const std::string& name, const Date& birthday, const Address& add): pImpl(new PersonImpl(name, birthday, addr)) { }std::string Person::name const { return pImpl->name();}std::string Person::name() const { return pImpl->name();}
clients use them like this
std::string name;Date dateofBirth;Address address;Person pp(name, dataOfBirth, address);std::cout << pp.name() << std::endl;
II. Interface classes
class Person {public: virtual ~Person(); virtual str::string name() const = 0; virtual std::string birthData() const = 0; virtual std::string address() const = 0; static std::tr1::shared_ptr<Person> create(const std::string& name, const Date& birthday, const Address& addr);};std::tr1::shared_ptr<Person> Person::create(const std::string& name, const Date& birthday, const Address& addr) { return std::tr1::shared_ptr<Person> (new RealPerson(name, birthday, addr);}class RealPerson: public Person {Public: RealPerson(const std::string& name, const Date& birthday, const Address& addr): theName(name), theBirthday(birthday), theAddress(addr) { } virtual ~RealPerson() { } std::string name() const; std::string birthDate() const; std::string address() const;private: std::string theName; Date theBirthDate; Address theAddress;};
clients use them like this
std::string name;Date dateofBirth;Address address;std::tr1::shared_ptr<Person>pp (Person::create(name, dataOfBirth, address);std::cout << pp->name() << std::endl;
阅读全文
0 0
- *Effective C++ 31. Minimize complilation dependencies between files(handle class & interface class)
- Handle Class 和 Interface Class
- HANDLE CLASS 和 INTERFACE CLASS
- effective java -Class and Interface
- Difference between Abstract class and interface
- Differences between abstract class and interface
- Java - Difference between Abstract class and Interface
- difference between abstract class and interface
- What's the difference between Interface and an abstract class in visual c#?
- Some function to handle class and its interface info
- difference between Interface and abstract class in Java
- What is difference between abstract class and interface
- difference between Abstract class and interface in java
- difference between Abstract class and interface in java
- Difference between Abstract Class and Interface in Java
- Different Between An Interface and An Abstract Class
- Handle Class(读书笔记)
- 有关abstract class 与 interface 论 (c#)
- ofbiz实战——实验室预约系统导航页
- 每日一练-20171031
- android 一个textview不同样式
- Unity3D for SMSSDK Android短信验证开发文档
- Android M(6.0)多网络应用
- *Effective C++ 31. Minimize complilation dependencies between files(handle class & interface class)
- 学习tensorflow遇到的问题
- 跳转相册和剪切页面点击取消崩溃
- 流程概述:编译、装载、执行
- expect的用法
- strtol,strtoll,strtoul, strtoull字符串转化成数字
- 解决新建ionic项目时安卓的tab栏在顶部问题
- js中两种定时器的设置及清除
- 机器学习笔记(4)各种分类