C++编程原则
- 哪里创建哪里释放
- 避免外部使用者需要过渡关心分配和释放的问题。例如释放顺序,容易造成程序崩溃
- 使用shared_ptr,第二个参数可以指定为自定义释放方法,默认是delete
- weak_ptr,弱引用,解决循环依赖问题
- shared_ptr,强引用
- 避免频繁分配释放
- 使用workspace的方式,也叫做内存池的方式,避免内存的频繁分配释放。内存复用
- 使用线程池,避免线程的频繁分配释放
- 如果频繁分配释放,容易造成内存碎片,导致程序缓慢
- 头文件原则
- 用什么包含什么,尽量少包含
- 尽量不要再头文件中using namespace。拒绝使用using namespace 例如 std cv等标准库在头文件中
- 避免命名空间污染,造成符号冲突
- using namespace 写到cpp
- 使用封装+RAII策略,分离声明和实现,简化头文件内容,减少依赖
- 减轻使用者负担
- 避免编写异常逻辑
- 使用#ifndef和#endif,在后面加备注,表示配对的if是哪个
- 单一模块实现单一功能
- 尽量不要一个模块写太复杂
一、C++概述
1、c++简介
“c++”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫”c with clsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。
库是编程模块的集合,可以在程序中调用它们。库对很多常见的编程问题提供了可靠的解决方法,因此可以节省程序员大量的时间和工作量。
c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++继承了c语言高效,简洁,快速和可移植的传统。
c++融合了3种不同的编程方式:
- c语言代表的过程性语言.
- c++在c语言基础上添加的类代表的面向对象语言.
- c++模板支持的泛型编程。
c语言和c++语言的关系:C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常