C++ 常识性技巧总结

来源:互联网 发布:开淘宝店怎么注册 编辑:程序博客网 时间:2024/06/17 18:04

在review别人写的C++代码中,体会到如下常识性技巧,适合初学者去模仿:


常识技巧1:  在C++代码中多使用宏定义,提高代码的维护成本,达到一改全改的目的,诸如:


可以在 xxx_def.h 中定义:

#define BEGIN_CCU_NAMESPACE()    namespace ccu {
#define END_CCU_NAMESPACE()        };

以后再其他.h 定义中引入 xxx_def.h 后使用:

诸如:
sample.h 中:

#ifndef _sample_H_
#define _sample_H_
#include “xxx_def.h”


BEGIN_CCU_NAMESPACE()

class Sample
{

}

END_CCU_NAMESPACE()

#endif


常识技巧2:  大量的类并不需要可拷贝,也不需要一个拷贝构造函数或赋值操作,不幸的是,如果你不主动声明他们,编译器会默认为你自动生成,而且是public的,可以考虑在private中添加空的拷贝构造函数和赋值操作,只有声明,没有定义,由于这些空程序被声明为 private , 当其他代码试图使用它的时候,编译器将报错,为了方便,可以使用宏
DISABLE_COPY_AND_ASSIGN:
// 禁止使用拷贝极造函数和赋值操作的宏
// 应在类的private:中使用
#define DISALLOW_COPY_AND_ASSIGN(TypeName)  TypeName(const TypeName&); void operator=(const TypeName&)

class Foo {
public: Foo(int f);
~Foo();
private: DISALLOW_COPY_AND_ASSIGN(Foo);
};
说明:,绝大多数情冴下都应使用DISALLOW_COPY_AND_ASSIGN,如果类确实需要可拷贝,应在该类的头文件中说明原由,幵适当定义拷贝极造函数和赋值操作,注意在operator=中检测自赋值(self-assignment)情冴。 在将类作为STL容器值得时候,你可能有使类可拷贝的冲劢。类似情冴下,真正该做的是使用挃针挃向STL容器中的对象,可以考虑使用std::tr1::shared_ptr。



常识技巧3: 只有一个参数的构造函数,必须用 explict 关键字声明,防止隐形转换 ,避免不合时宜的变换。


常识技巧4: 仅当只有数据时使用struct , 其他一概使用class

常识技巧5:使用组合(composition 这一点也是GoF在《Design Patterns》里反复强调的)通常比使用继承更适宜,如果使用继承的话,叧使用公共继承。


原创粉丝点击