C++编程风格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NGUever15/article/details/72303027

C++编程风格

抽象

对象的行为是指它对外部激励的反应

如果派生类之间的额区别在于属性,则用数据成员来表示,如果在于行为,则用虚函数来表示

如果通过共有继承来产生派生类,那么这个派生类应该是其基类的特化。

多态并不是所有程序设计问题的解决方案

一致性

构造哈数应该是的对象处于明确定义的状态,不仅要分配内存空间,更要初始化值。

首先在构造函数中建立起类的不变形,然后再其他成员函数中维持这个不变性。

用一致的方式来定义对象的状态。

类的接口定义应该是一致的——避免产生困惑。

对于每个new 操作,都要有相应的delete操作。

避免对从不使用的状态信息进行计算和存储。

用一个通过的函数来代替重复的表达式序列。

不必要的继承

识别出对实现的继承,可以使用私有基类或者(更好的方法是)使用成员对象。

使用默认参数的形式来代替函数重载的形式。

虚函数

派生类在处理继承而来的状态时必须与基类保持一致。

如果公有基类中没有定义虚析构函数,那么在所有的派生类或者派生类的数据成员中都应该没有定义析构函数。

通常情况下,基类的析构函数都应该被声明为虚函数。

将共同的行为迁移到基类中。

降低耦合性——将类之间的交互最小化。

没有那个类是完美的,过窄的设计要好过过宽的设计。

运算法的重载

重载运算符的含义必须是自然的,而不是为了展示程序员的聪明。

重载运算符必须能够与其他的运算符进行正确的交互。

保证重载运算符的行为是一致的。

识别出对实现的继承,可以使用私有基类或者(更好的方法是)使用成员对象。

包装

需要知道从函数中返回的指针的有效生存期。

独立的对象应该由独立的行为。

不要对某些基本信息进行完全的封装,要使得这些信息可以通过某些方法来访问。

效率

不能通过主观臆测就作出判断,应该通过执行性能分析的结果来找问题。

完整的接口有助于实现高效的客户代码。

案例研究

记住结束空字符的存在,length= strlen+1

不要使用构造函数来出事话静态数据成员。

每个类都应该只有唯一的内聚的功能。

将类设计成抽象数据类型而不是模块类。

##多重继承

控制访问不能解决二义性问题。

在使用虚基类之前,要彻底的理解它。

不要试图从你正在使用的编译器中来学习多重继承的语义。

避免人为的讲一个类限制为只能作为基类。

如果多重继承的层次结构中存在着析构函数,那个每个基类的析构函数都应该是虚函数。

如果客户对象中需要包含某钟服务,那么应该使用成员对象,而不是继承。

一个类应该能够描一组对象。

猜你喜欢

转载自blog.csdn.net/NGUever15/article/details/72303027