c语言虚函数面试 c++虚函数面试题( 二 )


C++函数的三种传递方式为:值传递 。指针传递 和 引用传递
注:值传递和指针传递,本质上就是指针传递 。
在A类中fun1是虚函数;B类中fun2是虚函数 。
①:机制上:c是面向过程的(c也可以是面向对象发的程序); C++是面向对象,提供了类 。C++的面向对象的程序比c容易 。
②:使用方向:c适合代码体积小的 , 效率高的场合,如嵌入式;C++更适合上层的 , 复杂的;Linux核心大部分是c写的,因为他是系统软件 , 效率要求极高
③:C++是c的超集;
④:C语言是结构化编程语言,C++是面向对象编程语言 。
⑤:C++侧重于对象而不是过程,侧重于类的设计而不是逻辑设计 。
C中struct主要提供的是自定义类型,和构造一种新的类型出来;
一致的地方:
不一致的地方:
C语言: 无Protection行为; 不能定义函数 , 但可以有函数指针;
C++: 有Procetion行为,默认是private; 可以定义函数 。
注: 就是访问权限,struct对于外部是完全访问的,C++是有访问 权限 设置的;
正确 ,  sizeof 是编译时运算符,编译时就确定了可以看成是和及其有关的常量
注:定义数组的时候 , 数组的长度必须是一个确定的常量;
形参:是在定义函数时指定的参数,在未调用时他们并不占用内存中的存储单元 。只有在调用的时候才会被分配内存,调用结束后,形参所占用的内存单元会被释放
实参:即c语言虚函数面试你调用函数时传递的参数;
重载: 同一个名字空间--- -函数名相同,参数列表不同 ; 注释:理解成一个类里面的多个同名函数
重写/覆盖: 不同名字空间-----用于继承,子类重新定义父类中 函数名相同,参数列表也相同虚函数 的方法
【c语言虚函数面试 c++虚函数面试题】 重定义/隐藏:重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
a 如果派生类的函数和基类的 函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏 。
b 如果派生类的函数与基类 的函数同名,并且参数也相同  , 但是基类函数没有vitual关键字,此时,基类的函数被隐藏 。
①: 隐藏 实现 细节 ,使得代码能够模块化;扩展代码模块,实现代码重写
②: 接口重用 :为了使用多个派生类中某个派生类的属性正确调用
用sizeof的方法:
定义一个指针P,打印出sizeof(P),如果结果是4,怎么标识改操作系统是32位 , 如果打印结果是2,则标识是16位、 。
虚函数 表,是在 编译 期就建立了 。各个虚函数被组织成一个虚函数的入口地址的数组(简而言之 , 就是组成了一个存放虚函数地址的数组)
虚函数表 指针 是在 运行 时建立的,也就是构造函数被调用时进行初始化的 。
封装,继承,多态 是什么?怎那么用?为什么使用它?
封装:将客观事物抽象成类 , 每个类对自身的 数据 和 方法 实行 protection ; 注释 : 保护内部成员
继承:广义的继承有三种实现形式:
实现继承:指使用基类的属性和方法,而无需额外编码的能力;
可视继承:子窗体使用父窗体的外观和实现代码
接口继承:仅使用属性和方法,实现之后到子类实现
前两种和后一种构成了功能复用的两种方法
多态: 主要是为了抽象
只要是函数都会做类型检查 。
这是内联函数跟宏观比的优势 。
①:静态存储区域分配; 内存在编译的时候就已经分配好了,这块内存在程序的整个运行期间都存在 。例如全局变量 。

推荐阅读