1、main函数执行之前,还会执行什么代码? RSP:全局对象的构造函数 2、描述内存分配方式以及它们的区别? RSP:a、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。如全局变量,static变量。 b、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 C、在堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定。 3、 struct和class的区别 RSP: a、struct的成员默认是公有,而类的成员默认是私有的。 b、struct像一堆缺乏封装和功能开放的内存位,而类像可靠的社会成员,它有封装屏障和良好定义的接口。 4、当一个类A中没有任何成员变量与成员函数,这时sizeof(A)的值是多少? RSP:不是零,举个反倒,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分。 5、请说出const与#difine相比,有何优点? RSP:const作用,定义常量、修饰函数参数、修饰函数返回值三个作用。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 a、const常量有数据类型,而宏常量没有。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型检查。 6、#include<file.h>与#include"file.h"区别? RSP:前者是从标准库的路径寻找和引用file.h,而后者是从当前工作路径寻找 7、什么是预编译,何时需要预编译? RSP:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文本代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。 8、class A,每一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果? this作用域是在类内部,当在类的非静态成员函数访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,也就是说,即使你没用写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 9、this指针是什么时候创建的? RSP:this在成员函数的开始执行前构造,在成员函数的执行结束后清除。 10、 什么是链接?符号链接与硬链接的区别是什么? 答题要点: 链接是指用一个i节点对应多个文件名。硬链接是把文件的i节点号指向该i节点,且链接计数器值加1。删除链接文件时计数器值减1,当其值为0时,i节点被释放。符号链接是只有文件名的一个链接文件,并不指向一个真正的i节点。在删除符号链接文件时与硬链接文件有区别。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!