/* 什么是缺省函数?C++的类中有哪些缺省函数?*/
缺省函数是C++声明一个类后编译器默认生成的函数(如果未定义的话)
共有六个缺省函数
1. 缺省构造函数
2. 缺省拷贝构造函数
3. 缺省析构函数
4. 赋值运算符
5. 取地址运算符
6. 取地址运算符(const)
*空类不会生成任何缺省函数
/* 为什么会有缺省函数? */
正如自然界中人会有生老病死,类定义的对象也会有默认的行为和特征
缺省函数是用来控制对象的行为,描述对象的特征
/* 什么情况下没有缺省函数? */
/* 构造函数、析构函数的返回值? */
构造函数无返回值,实际返回所创建的对象的地址;
析构函数实际返回所析构对象的地址,用户仍可使用这块内存
(实际上析构函数什么也没做,所谓的析构是抽象的)
/* 内置变量是否有构造函数? */
/*
------------------------------------------------------------------------------------------
*/
/* 内部寄存器的作用? */
CPU中的一块存储区域,用于暂时存储程序运行中的相关数据与运算结果
/* 寄存器的用法及特殊作用? */
eax 累加器(accumulator)
它是很多加法乘法指令的缺省寄存器
函数返回值时做中间层
ebx 基地址(base)寄存器
在内存寻址时存放地址
ecx 计数器(counter)
是重复(rep)的前缀指令和LOOP指令的内定计数器
edx
总是被用来放整数除法产生的余数
eip
存放下一条运行的指令地址
esp
保存函数调用栈帧的栈顶地址
/* 哪些指令与寄存器关联 */
/*
------------------------------------------------------------------------------------------
*/
/* extern 的用法 */
1. 修饰变量的声明,引用外部定义的全局变量
2. 修饰函数声明,引用其他文件函数,取代头文件
3. 指示以C/C++编译,实现C++与C及其他语言是混合编程
/*
------------------------------------------------------------------------------------------
*/
/* #if #ifdef #ifndef 的区别 */
#if 后面接的是表达式,如果表达式为True,则编译 #if 下面的代码
#if (max == 10)
... code ...
#endif
#ifdef 后面接的是一个宏,如果定义过这个宏,则编译下面的代码(与逻辑true/false无关)
#ifdef MAX
... code ...
#endif
#ifndef 与 #ifdef 相反
*注意*
这几个宏定义只是决定代码块是否被编译