作为C++经典
5 循环和关系表达式
int x=(1,024);
值为二十
6 分支语句和逻辑运算符
and or not
都是C++中的保留字,如果C想用,包含头文件<ios646.h>
ofstream
对象,格式类似于cout
,实现文件输入与输出。有子函数open(),close()
7 函数 C++的编程模块
函数原型中不必提供变量名,只需有数据类型就行
(…) 表示不指定参数
在编译阶段进行的原型化被称为静态类型检查
arguement 表示实参,parameter表示形参
指针和const
,这两个一结合就麻烦起来了
与C不同,C++不允许main()调用自己
递归,分治思想 divide-and-conquer strategy
获取函数地址的方法很简单,只需要使用函数名(后边不加括号)即可。double pm(int);
double (*pf)(int)
pf =pam;
则定义出一个指向pm()的函数指针,这个函数指针可以这么用pf(4)
,等价于(*pf)(4)
忍受逻辑上无法自圆其说的观点正是人类思维活动的特点。
8 函数探幽
如果实参与引用参数不匹配,C++将生成临时变量。当前,仅当参数为const引用时,C++才允许这样做,但以前不是这样。
左值 可被引用的数据对象。long edge =5L;
5L代表long类型的5
如果接受引用参数的函数的意图是修改作为参数传递的变量,则创建临时变量将阻止这种意图的实现。解决方法是,禁止创建临时变量,现在的C++标准正是这样做的(然而,在默认情况下,有些编译器仍将发出警告,而不是错误消息,因此如果看到了有关临时变量的警告,请不要忽略)。
&&
表示右值引用。右值,不能通过地址访问的值。NULL
在C中是(void*)0,C++中为整数0.c++中当一个指针的值为0时,认为指针为空指针void*
无类型指针
返回引用主要是为了更高的效率,减少拷贝。
要为某个参数设置默认值,则必须为他右边的所有参数提供默认值。
函数重载 关键是函数特征标(function signature),即函数参数列表。
函数模板template<typename AnyType>
定义了一种无类型变量AnyType
实例化和具体化
decltype(x) y
make y the same type as x
9 内存模型和名称空间
不要使用#include来包含源代码文件,这样做将导致多重声明。
#ifndef
if not define
register int x;
指出程序员想使用一个自动变量,在C++11中,这种提示作用也失去了,保留关键字register的重要原因是,避免使用了该关键字的现有代码非法。
$$ 链接性\left{
\begin{array}{lcl}
外部\
内部\
无\
\end{array} \right.$$
cv限制符 const和volatileconst
表明内存被初始化后程序便不能再对它进行修改volatile
表明,即使程序代码没有对内存单位进行修改,其值也可能发生变化
mutable 指出某个变量可以被修改
对函数使用static修饰表明该函数只在这个文件中可见
10 对象和类
接口 一个共享框架,供两个系统交互时使用。