面试问题
1.指针和数组有什么区别,这能谈到什么区别?
2.Override和Overload的区别
各位知道怎么答吗?
问题点数:100、回复次数:16Top
1 楼kobefly(科比--网络学习中)回复于 2005-03-31 20:16:50 得分 30
重写Overriding是父类与子类之间多态性的一种表现,
重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,
我们说该方法被重写 (Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,
父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,
它们或有不同的参数个数或有不同的参数类型,
则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。
Top
2 楼kobefly(科比--网络学习中)回复于 2005-03-31 20:19:23 得分 30
指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。
3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
问题:指针与数组
听说char a[]与char *a是一致的,是不是这样呢?
答案与分析:
指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子:
char a[] = "Hi, pig!";
char *p = "Hi, pig!";
上述两个变量的内存布局分别如下:
数组a需要在内存中占用8个字节的空间,这段内存区通过名字a来标志。指针p则需要4个字节的空间来存放地址,这4个字节用名字p来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指,即空指针。目前这个p指向某地连续的8个字节,即字符串“Hi, pig!”。
另外,例如:对于a[2]和p[2],二者都返回字符‘i’,但是编译器产生的执行代码却不一样。对于a[2],执行代码是从a的位置开始,向后移 动2两个字节,然后取出其中的字符。对于p[2],执行代码是从p的位置取出一个地址,在其上加2,然后取出对应内存中的字符。
Top
3 楼csumallsme(侃刀)回复于 2005-03-31 20:42:56 得分 5
很详细了Top
4 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-31 21:20:35 得分 5
顶Top
5 楼kobefly(科比--网络学习中)回复于 2005-03-31 21:22:03 得分 0
建议结贴
哈哈Top
6 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-03-31 21:24:30 得分 0
支持揭帖Top
7 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-03-31 22:29:35 得分 0
好贴
Top
8 楼pcboyxhy(-273.15℃)回复于 2005-03-31 22:31:23 得分 0
没话说了Top
9 楼wshcdr(dd)回复于 2005-03-31 22:35:48 得分 0
科比强人啊Top
10 楼MagicCarmack(MagiC++)回复于 2005-04-01 07:35:51 得分 0
回复人: kobefly(科比---开始学习c++!)
太猛了
Top
11 楼zengwujun(月之海 为linux入门奋斗100天)回复于 2005-04-01 08:16:49 得分 0
markTop
12 楼YFY(天易)回复于 2005-04-01 08:31:58 得分 10
1. 指针动态申请的内存要自己释放,数组不用管;
2. 指针申请内存在堆上,大小限制受操作系统限制;
数组不行,数组受编译环境的栈大小限制,默认不可以定义一个几十M大小的内存块;
Top
13 楼skywgs(浪迹天涯)回复于 2005-04-01 08:33:04 得分 10
kobefly(科比---开始学习c++!) 都回答完了,我们没机会了!Top
14 楼sharkabc(shark)回复于 2005-04-01 10:25:14 得分 10
指针动态申请的内存要自己释放,数组不用管;
???不解?
delete []arrayname;不是释放内存吗?Top
15 楼LeonOrient666()回复于 2005-04-05 19:26:05 得分 0
谢谢大家
不好意思,这几天有点事情没上网
我现揭帖了
Top
16 楼hanyaocsdn()回复于 2005-04-14 09:03:58 得分 0
markTop




