我是靠谱客的博主 完美钢笔,最近开发中收集的这篇文章主要介绍条款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.如果使用类型的引用或者指针就可以完成任务,就不要使用对象,因为使用对象就需要用到该类型的定义式。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复