C++ 常识性技巧总结
来源:互联网 发布:开淘宝店怎么注册 编辑:程序博客网 时间:2024/06/17 18:04
在review别人写的C++代码中,体会到如下常识性技巧,适合初学者去模仿:
常识技巧1: 在C++代码中多使用宏定义,提高代码的维护成本,达到一改全改的目的,诸如:
可以在 xxx_def.h 中定义:
#define BEGIN_CCU_NAMESPACE() namespace ccu {
#define END_CCU_NAMESPACE() };
#define END_CCU_NAMESPACE() };
以后再其他.h 定义中引入 xxx_def.h 后使用:
诸如:
sample.h 中:
#ifndef _sample_H_
#define _sample_H_
#define _sample_H_
#include “xxx_def.h”
BEGIN_CCU_NAMESPACE()
class Sample
{
}
BEGIN_CCU_NAMESPACE()
class Sample
{
}
END_CCU_NAMESPACE()
#endif
常识技巧2: 大量的类并不需要可拷贝,也不需要一个拷贝构造函数或赋值操作,不幸的是,如果你不主动声明他们,编译器会默认为你自动生成,而且是public的,可以考虑在private中添加空的拷贝构造函数和赋值操作,只有声明,没有定义,由于这些空程序被声明为 private , 当其他代码试图使用它的时候,编译器将报错,为了方便,可以使用宏
#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》里反复强调的)通常比使用继承更适宜,如果使用继承的话,叧使用公共继承。
- C++ 常识性技巧总结
- Hive的一些常识性技巧
- C语言的基本常识性问题集
- C/C++编程技巧总结
- C语言符号技巧总结
- 常识性错误
- c宏定义的技巧总结
- c宏定义的技巧总结
- c宏定义的技巧总结
- c宏定义的技巧总结
- [总结] C语言的位操作技巧
- c宏定义的技巧总结(转)
- C老鸟编程技巧总结 (1)
- C老鸟编程技巧总结 (2)
- c宏定义的一些技巧总结
- C#JQuery学习(二)技巧总结
- 常识性逻辑错误
- 我的常识性错误
- Android开发的一些知识点
- Apache FTPClient 匿名登录上传下载数据
- oracle创建数据库后创建自己的用户
- InnoDB: Database page corruption on disk or a failed
- Linux0.11中对文本文件进行修改的策略
- C++ 常识性技巧总结
- java properties
- poj.org Pro 1004
- c#收发广播消息
- javaScript数字四舍五入
- HUD 2955 Robberies [0-1背包的简单转化]
- enum、typedef
- Linux平台Boost的编译方法
- oracle创建表空间