我是靠谱客的博主 完美钢笔,最近开发中收集的这篇文章主要介绍条款31:将文件间的编译依存关系降至最低1.如果使用类型的引用或者指针就可以完成任务,就不要使用对象,因为使用对象就需要用到该类型的定义式。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include <string>

#include "date.h"

#include "address.h"

class Person{

std::string name() const;

std::string birthDate() const;

std::string address() const;

}

如果程序这样写的话,Person定义文件和其他含入文件之间形成了一种编译依存关系。如果这些头文件有任何一个被改变,或者这些头文件所依赖的其他头文件发生改变,那么每一个含入Person class 的文件就得重新编译,任何使用Person class的文件也必须重新编译。这样的连串编译依存关系会对许多项目造成难以形容的灾难。

针对Person我们可以这样做:把Person分割为两个class。一个提供接口,另一个负责实现接口。

#include <string>        //标准程序库组件不该被前置声明

#include <memory>

class PersonImpl;           //前置声明

class Date;                    //前置声明

class Address;        //前置声明

class Person{

public:

Person(const std::string &  name, cosnt Date& birthday, const Address & addr);

std::string name() const ;

std::string birthdate() const;

std::string address() const;

这样的设计之下,Person的客户就完全与Dates,Address 以及Personsd的实现项目分离了。那些classes的任何实现修改都不需要Person客户端重新编译。此外由于客户无法看到Person的实现细节,也就不可能写出什么“取决于那些细节的代码“。这就是”接口与实现分离”!

1.如果使用类型的引用或者指针就可以完成任务,就不要使用对象,因为使用对象就需要用到该类型的定义式。

class CIEC103DEviceEX;

class CProtocalMsg

{

      static EErrorCodeOfRec AnalyseRecBuf( CIEC103Driver * pDriver,CIEC103DeviceEX * pDec,

     .....

    ....

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后

以上就是完美钢笔为你收集整理的条款31:将文件间的编译依存关系降至最低1.如果使用类型的引用或者指针就可以完成任务,就不要使用对象,因为使用对象就需要用到该类型的定义式。的全部内容,希望文章能够帮你解决条款31:将文件间的编译依存关系降至最低1.如果使用类型的引用或者指针就可以完成任务,就不要使用对象,因为使用对象就需要用到该类型的定义式。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(25)

评论列表共有 0 条评论

立即
投稿
返回
顶部