首页 > 代码库 > c++的一些习惯
c++的一些习惯
1.显示转换:类型说明符(表达式),如a = int(z)
2.枚举类型enum:专门用来解决对数据的合法性检查问题,如一星期七天,如果用int/char等数据类型描述时,则需要对数据的合法性检查。声明形式为:
enum 枚举类型名 {变量值列表}
注意:- 对枚举元素按常理处理,不能对其赋值
- 枚举值可以进行关系运算
- 整数值不能直接赋给枚举变量,如果需要,应进行强制类型转换
- C++中声明完枚举类型后,声明变量时,可以不写关键字enum
3.反汇编:值将机器语言代码转换成与之对应的汇编语言代码的过程。
4.CPU所执行的指令并不对操作数的类型加以区分,对各个操作数都执行相同的操作。编译器需要根据变量的数据类型选择适当的指令
5.IA-32:Inter Architecture,Inter体系架构
6.递归过程的两个阶段:递推、回归
7.引用传递:引用是一种特殊类型的变量,可以被认为是另一个变量的别名;声明一个引用时,必须同时对它进行初始化,使它指向一个已经存在的对象;一旦一个引用被初始化后,就不能改为指向其他对象。如:int &i = a.
8.内联函数不是在调用时发生空置转移,而是在编译时将函数体嵌入在每一个调用处,节省了参数传递,控制转移等开销。关键字inline修饰在函数定义时刻。编译器并不承诺将函数一定声明为内联函数,递归一定不会被声明为内联。
9.带默认形参值的函数:有默认值得形参必须在形参列表的最后,有默认形参的右边不能出现无默认值的形参
10.函数重载:解决人类自然语言中的一词多以,反映到程序中就是重载。
- 定义:两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。
- 注意:重载函数的形参必须不同,个数不同或者类型不同。编译器不以返回值区分函数
11.系统函数:分为两类,一是标准c++的函数,另一类是非标准c++的函数,它是当前操作系统或编译环境中所特有的系统函数。
12.参数声明:在C语言中,声明函数时,括号内为空,并不表示这个函数没有任何参数,而表示它所要求的参数是未知的。否则应加入void。
13.封装:将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的函数代码进行有机的结合,形成类,其中数据和函数都是类的成员
14.继承:使得一般概念中的属性和行为可以被特殊概念共享,摆脱重复分析,重复开发的困境。
15.多态:指一段程序能够处理多种类型对象的能力。通过强制多态,重载多态,类型参数多态,包含多态4中形式来实现。强制多态主要是指类型转换(显式和隐式),重载指给同一个名字赋予不同的含义,这两种多态属于特殊多态,只是表面的多态。虚函数实现包含多态,虚函数是多态性的精华。模板实现参数化多态。
16.当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。组合类构造函数定义如下:
类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),...
17.前向引用声明:
- 解决问题:遇到两个类互相引用(循环依赖)
- 定义:在引用未定义的类之前,将该类的名字告诉编译器,eg:class B;
- 注意:在提供一个完整的类定义之前,不能定义该类的对象,也不能在内联成员函数中使用该类的对象。
- 可以声明类的对象引用或指针
18.结构体与类的区别:结构体和类的唯一区别在于,结构体和类具有不同的默认访问控制属性:在类中,对于未指定访问控制属性的成员,其访问控制属性为私有,结构体中为共有类型。之所以在c++引入结构体,是为了保证与c的兼容性
19.函数调用时传递基本类型的数据是通过运行栈,传递对象也一样是通过运行栈。在主调函数和被调函数之间,有一块二者都要访问的公共区域,主调把实参写入,函数调用发生后,北调函数通过读取这段区域即可得到形参值。
c++的一些习惯