文章目录
- C++与C语言
- 为什么要学习C++
- C++为什么难学
- c++值得学习的新特征
- C++参考书籍
- 开发工具
- 可移植性和标准
- 程序创建的技巧
- 编译和链接
C++与C语言
C++是一种计算机高级程序设计语言,C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。
C++对比C语言的特点:
- 与C语言的兼容性。C++与C语言完全兼容,c语言的绝大多数内容可以直接用于C++的程序设计。用C语言编写的程序可以不加修改的用于C++。
- 数据封装和数据隐藏。在C++中类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类,支持数据封装和数据隐藏。
- 支持继承和重用。在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效的组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂深入的开发。新定义的类为子类成为派生类,它可以从父类那里继承所有非私有的属性和方法作为自己的成员。
为什么要学习C++
- C++能提升性能。
- 编程语言的需求总结为四个:效率、灵活、抽象、生产力。C语言注重前两者,C++注重前三者,JAVA、.net这些注重后两者。
- C++应用范围广泛。
C++为什么难学
- C++支持的编程范式
过程式:for/if
数据抽象:封装、继承和多态
基于对象:程序=对象+对象+对象+消息传递
面对对象式
函数式:递归方式进行编程
泛型形式:程序=对象+对象+抽象行为。抽象行为能够施加在不同类型而又大相径庭的对象上。通用编程的思想
模板元形式:模板元编程是指给出代码的产生规则,让编译器产生新代码实现我们预期的功能。这样的话,某些运行时工作被提前到了编译器来完成,从而增加了编译时间,但提高了运行效率,可以实现神奇的类型推导。 - 值语义与对象语义:值语义可以拷贝与赋值、对象语义不可进行拷贝和赋值。
c++值得学习的新特征
智能指针如shared_ptr/weak_ptr等;
rvalue reference;
unction/bind
lambda expression and closure
C++参考书籍
- c++ primer
- Effective C++
- C++编程规范
- 敏捷软件开发——原则、模式与实践
- 代码大全
开发工具
主流的有:GNU g++和微软的VS。在windows中开发的程序可以直接放在Lniux中运行。
可移植性和标准
可移植性:不同平台上编写的代码可否直接运行?
可移植性存在两个障碍:其中的一个是硬件;第二个障碍是语言上的差异(通过制订C++标准来消除)。
C++98、C++11(最新标准)
程序创建的技巧
程序运行大体如下:
- .使用文本编辑器编写程序,并将其保在到文件中,这个文件就是程序的源代码。
- 编译源代码。这意味着运行一个程序,将源代码翻译为主机使用的内部语言一一机器语言。 包含了翻译后的程序的文件就是程序的目标代码(object code ) 。 .obj
- 将目标代码与其他代码链接起来。链接指的是将目标代码同使用的函数的归标代码以及一些标准的启动代码(startup code) 组合起来, 生成程序的运行阶段版本。包含该最终产品的文件被称为可执行代码。
编译和链接
创建好项目后,需要对程序进行编译和链接。IDE通常提供了多个菜单项,如Compile(编译)、Build(建立)、Make(生成)、Build All(全部建立)、Link(链接)、Execute(执行)、Run(运行)和Debug(调试),不过同一个IDE中,不一定包含所有这些选项。
- Compile通常意味着对当前打开的文件中的代码进行编译。
- Build和Make通常意味着编译项目中所有源代码文件中的代码。如果只有一个修改了则只编译这个文件。
- Build All通常意味着重新编译所有的源代码文件。
- Link意味着将编译后的源代码与所需的库代码组合起来。
- Run和Execute意味着运行程序。
- Debug意味着以步进方式执行程序。
- 调试版本对比发布版包含额外的代码,会增大程序,降低执行速度,但可提供详细的调试信息。