1.C++能提升性能,C++之父BjarneStroustrup戏称C++可以减轻全球变暖问题。
2.编程语言需求总结为四个:效率(efficiency)、灵活(flexible)、抽象(abstraction)、生产力(productvity)。C语言注重前两者,C++注重前三者,JAVA、.net这些都注重后两者
3.C++应用范围广,大部分桌面软件、游戏、服务器、搜索引擎
1. C++支持的编程范式(paradigm)多
过程式(procedual):面向结构化的程序设计(任何程序都有三种形式构成:顺序、选择、循环)
数据抽象(data abstraction):等价于ADT,抽象数据类型指的是数据的取值范围,以及这些数据对应的操作集合,强调了数据和操作两点。就是对数据的逻辑结构抽象隐藏起来将操作暴露出来,体现的是封装。封装强调
基于对象(object-based):体现的是封装
面向对象式(object-oriented):程序=对象+对象+对象+对象间的消息传递。三个特征,封装、继承、多态。
函数式(functional):指的是一切皆函数,程序以函数为中心,摒弃了for循环,表现为函数的递归调用。
泛型形式:程序=对象+对象+对象+抽象行为(能够施加在不同类型而又大相径庭的对象之上),强调了一种通用的编程思想
模板元形式:模板元编程是给出代码的产生规则,编译器在编译期解释这些规则并生成新代码来实现我们预期的功能。模板元编程由于把运算由执行时提前到了编译时,所以其一个特点是运行时很快,效率很高!不过这是以编译耗时为代价的。另一方面是可以用来做那种神奇的类型推导
http://blog.csdn.net/myan/article/details/5928531
注意:数据抽象、基于对象和面向对象式里面都提到了封装,其中相互之间是有一些细微的差别的,数据抽象里面的封装强调的是值语义,基于对象和面向对象式强调的是对象语义。值语义指的是可以拷贝与赋值,对象语义不可以进行拷贝与赋值。
智能指针如shared_ptr、weak_ptr等
右值引用:rvalue reference;
摆脱面向对象的束缚:function/bind;
lambda expression and closure。
C++ primer 第四版(第五版中文版即将出来,会加入C++11的新特性)
Effective C++ 3rd
C++编码规范
敏捷软件开发——原则、模式与实践
代码大全,第二版
//add.h #ifndef _ADD_H_ #define _ADD_H_ int add(int a,int b); #endif
//sub.h #ifndef _SUB_H_ #define _SUB_H_ int sub(int a,int b); #endif
//add.cpp #include "add.h" int add(int a, int b) { return a+b; }
//sub.cpp #include "sub.h" int sub(int a, int b) { return a-b; }
//main.cpp #include <iostream> #include "add.h" #include "sub.h" using namespace std;//引入命名空间 int main(void) { int a = 10; int b = 3; cout<<"hello C++"<<endl; cout<<"a+b="<<add(a,b)<<endl; cout<<"a-b="<<sub(a,b)<<endl; return 0; }
编译器使用:启动调试F5,窗口一闪而过;启动运行不调试ctrl+F5可以保留住窗口。
linux下运行,Makefile文件:
.PHONY:clean CC=g++ CPPFLAGS=-wall -g BIN=main OBJS=main.o add.o sub.o $(BIN):(OBJS) $(CC) $(CPPFLAGS) $^ -o $@ %.o:%.cpp $(CC) $(CPPFLAGS) -c $< -o $@ clean: rm -f *.o $(BIN)