C++面试问题总结 2


/* 什么是缺省函数?C++的类中有哪些缺省函数?*/


缺省函数是C++声明一个类后编译器默认生成的函数(如果未定义的话)


共有六个缺省函数

1. 缺省构造函数

2. 缺省拷贝构造函数

3. 缺省析构函数

4. 赋值运算符

5. 取地址运算符

6. 取地址运算符(const)


*空类不会生成任何缺省函数


/* 为什么会有缺省函数? */


正如自然界中人会有生老病死,类定义的对象也会有默认的行为和特征

缺省函数是用来控制对象的行为,描述对象的特征


/* 什么情况下没有缺省函数? */



/* 构造函数、析构函数的返回值? */


构造函数无返回值,实际返回所创建的对象的地址;

析构函数实际返回所析构对象的地址,用户仍可使用这块内存

(实际上析构函数什么也没做,所谓的析构是抽象的)


/* 内置变量是否有构造函数? */


/*
------------------------------------------------------------------------------------------
*/


/* 内部寄存器的作用? */


CPU中的一块存储区域,用于暂时存储程序运行中的相关数据与运算结果


/* 寄存器的用法及特殊作用? */


eax   累加器(accumulator)  
它是很多加法乘法指令的缺省寄存器
函数返回值时做中间层


ebx   基地址(base)寄存器   

在内存寻址时存放地址


ecx   计数器(counter)   
是重复(rep)的前缀指令和LOOP指令的内定计数器


edx  
总是被用来放整数除法产生的余数


eip

存放下一条运行的指令地址


esp

保存函数调用栈帧的栈顶地址


/* 哪些指令与寄存器关联 */


jmp  call  指令会改变eip的值

call 指令为函数分配栈帧 ebx / 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 相反


*注意*

这几个宏定义只是决定代码块是否被编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值