一、C:Objective-C、C++
C++:Java、C#、D
Java:JavaScript、ActionScript
二、1、普通引用在声明时必须用其他的变量进行初始化
2、const引用,让变量拥有只读属性
3、Type& name<<>>Type* const name
4、当函数返回值为引用时:若返回栈变量,不能成为其他引用的初始值,也不能作为左值使用,若返回静态或全局变量,则都可以
三、1、内联函数用来替代宏代码片段,没有普通函数调用时的额外开销
2、内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。
3、函数声明时为参数提供一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替。
四、重载
1、 当函数名和不同的参数搭配时函数的含义不同:参数个数、类型、顺序不同
2、当函数默认参数遇上函数重载时,可能会出现二义性。两者千万不要同时使用!
3、extern "C" 强制让C++编译器对代码进行C方式编译
5、关键字
1、new、delete: new以具体类型为单位进行内存分配,malloc只能以字节为单位进行分配
new可进行初始化,malloc不具备初始化的特性
2、C++将全局作用域分成不同的部分,命名空间的定义:namespace name{ }
3、 使用整个命名空间:using namespace name
使用命名空间的变量:using name::variable
使用默认命名空间中的变量::variable
4、强制类型转换
static_cast:不能用于基本类型指针间的转换
const_cast:去除变量的const属性
dynamic_cast:用于类层次间的转换,交叉转换
reinterpret_cast:指针类型间的强制转换,用于整数和指针类型间的强制转换
6、 1、符号表是编译器自用的内部数据结构
2、只有用字面量初始化的const常量才会进入符号表
3、被volatile修饰的const常量不会进入符号表
4、在编译期间不能直接确定初始值的const量,都被作为只读变量处理
5、当实参为变量并能够精确匹配形参时,不再进行默认类型转换的尝试;当为字面量时,编译器会同时进行精确匹配和默认类型转换的尝试。
6、extern中不允许重载函数,但extern中的函数可以与之外的函数进行重载