分类: C/C++
2014-06-20 06:52:38
——任何规则都不可能完全一致,以至于不能容许任何例外
一、基本类型
1. 指针:指向常量的指针 vs 指向指针的常量
a. 指向常量的指针:const char *p
b. 指向指针的常量:char* const p
2. 引用:声明时必须赋值
3. 指向void的指针:可以从别的指针类型转换为void*, 反之必须适用static_cast
4. new: 返回指针,对象分配在堆
a. 异常函数set_new_handler(fn)
5. static_case:相近类型的转换,reinterpret_case是完全不相关的类型的转换——最好都不用
6. 递归与迭代:其实迭代更接近循环,是对另外函数的调用;递归是对自身的调用,必须有递归出口,否则无限循环
7.extern
a. 声明变量:表明变量在本文件之后或者其他文件中定义,提供多个文件使用同一个变量的功能
b. 函数声明:同上
c. extern "C":函数用C的标准编译
8. 函数指针
a. void (*fp)(string) //声明函数指针可以指向的原型(参数,返回值)
b. void error(string s) //可以被指向的函数实体
c. fp =&error //赋值函数指针
d. fp("abcd") //通过指针调用函数
9. 不定数目的函数参数:printf(const char* s ...)
10. 命名空间:namespace, 跟c#中完全一样
a. 匿名namespace:
namespace {code...} ——相当于namespace $$${code...}, $$$根据不同编译器而不同
11. 参数查找:在本namespace中找不到函数,则在函数引用的类型命名空间中去找
namespace ns
{
class Date {};
std::string format(const Date&)
}
void f(ns::Date d, int i)
{
std::string s=format(d) //找ns下的format
std::string s=format(i) //错误,找不到合适参数
}
12. 异常