昨天华为的人通知我去面试,他在电话里问了我关于C++的一大堆问题,详情请进...

Flamesong 2003-03-28 11:05:01
1,结构和类的区别?
2,什么是inline函数?
3,指向子类对象的指针能否指向父类对象?
4,什么是纯虚类?
还有的记不住了。
我的答案是:
1:struct的成员默认是public的,而class的成员默认是private的,还有有些编译器不支持在struct内定义函数。
2:inline函数是用来代替宏的...下面的没让我说下去^_^
3:一般情况下不行也不应该这样,具体要看编译器是否支持,通过强制转换是可以,但子类对象的指针指向父类对象肯定是不安全的。
4:成员函数是纯虚函数的类,不能实例化。

请大家批评指正,还有去面试华为考C++主要考些什么?^_^
...全文
176 72 打赏 收藏 转发到动态 举报
写回复
用AI写文章
72 条回复
切换为时间正序
请发表友善的回复…
发表回复
armmy 2003-04-17
  • 打赏
  • 举报
回复
电话面试我时也是这样的,明天去深圳面试,好怕喔
Flamesong 2003-04-02
  • 打赏
  • 举报
回复
大家继续讨论啊!
dodowei 2003-04-01
  • 打赏
  • 举报
回复
这些问题果然是基础的啊,我看起来好象都明白是怎么一回事,但是,具体似乎也说不全啊,还是要搞好基本功~!
Flamesong 2003-04-01
  • 打赏
  • 举报
回复
To heartlove(吴竹):别光说有错误呀!你说一下你的“正确”回答。
To tjie() :据说C方面的考到数据结构的很多,在华为的阪田基地。
To CliffWinston(Cliff):软件开发高级工程师.
Minority 2003-04-01
  • 打赏
  • 举报
回复
我的还痛苦些,问多态是如何实现的,我当时的确不记得了。。。。5555555
hzcsh 2003-04-01
  • 打赏
  • 举报
回复
重视基础知识!!!
坐着等天亮 2003-04-01
  • 打赏
  • 举报
回复
fang_jb(寂寞如雪)说:
2、inline目的就是替换宏的,因为宏的目的就是减少短小代码写成函数后的开销以及代码的清晰程度


inline函数和宏还是不一样的,没有什么替代不替代的问题。
宏只是一个替代,它实现的不一定是函数,用处还是很广的。
而且,宏的目的不是较少代码写成函数后的开销。例如 _DEBUG 这样的宏
还有一些常量,都是用宏的。

据个例子:我需要一批函数,他们需要有相同的参数格式、返回类型,就可以这么写:
#define FUNC(n) \
int n(int arg1)

FUNC(myfunc)
{
// your code
}
qing_li73 2003-04-01
  • 打赏
  • 举报
回复
basic issue
fang_jb 2003-04-01
  • 打赏
  • 举报
回复
1、在C++里struct和class都差不多了,要说安全性,难道是说private和protected?
有区别吗?想访问的话照样还是能从指针里访问到
2、inline目的就是替换宏的,因为宏的目的就是减少短小代码写成函数后的开销以及代码的清晰程度
3、子类父类指针的问题是个典型的向上映射还是向下映射的问题,懒得说了
4、纯虚类,在我看来就是个COM的interface准备的,具体的就是,里面有个virtual func()=0
gwolf 2003-04-01
  • 打赏
  • 举报
回复
我都答对了,可还是不要我。
坐着等天亮 2003-04-01
  • 打赏
  • 举报
回复
我的答案是:

1-我觉得最最显著的差别,struct是C里面也可以用的,class只能在C++里用。其他说什么struct的成员默认public那都是有了C++思想的struct(当然也可以说这个区别),但是那就不是单纯的struct了。
2-inline函数是把函数体嵌入到调用的地方,而不是生成一个call子函数。因此,它可以节约call以及参数传递所带来的速度上的影响。但是由于在所有调用的地方都把这段函数给嵌入了,程序也许会显得比较大。另外,由于inline函数在编译的时候就要嵌入,这不同于非inline的函数是在连接的时候确定call的地址。所以要是把inline函数写在C(C++)文件而不是H文件里面的话,只有本个C(C++)文件里面才能调用。因此inline函数一般要写在H文件里。而普通的函数(或者变量)如果写在H文件里面,就会在不同的C程序里产生具有相同标号的函数体,连接的时候就会出错了。
3-反问他“对象”与“实例”的区别。
4-只要析构函数是virtual的就可以了。(我也不是清楚,不知对不对)
Flamesong 2003-04-01
  • 打赏
  • 举报
回复
js
blossom007cn 2003-03-31
  • 打赏
  • 举报
回复
Good luck!!
tth 2003-03-31
  • 打赏
  • 举报
回复
up
坐着等天亮 2003-03-31
  • 打赏
  • 举报
回复
指向子类对象的指针能否指向父类对象?
也许是我太多心了,总觉得这个问题问得不好。
因为它只是说“指向子类对象的指针”,没有说明这个指针的类型。
按照他的意思应该是:一个子类类型的指针是否可以指向父类实例
举一个例子:
CMyWnd *pWnd = (CMyWnd *)AfxGetMainWnd()
这样的意思吧。
在这里,AfxGetMainWnd 返回的是CWnd型的,然而我的实例是CMyWnd型的,所以可以转化。
tjie 2003-03-31
  • 打赏
  • 举报
回复
请问一下Flamesong(天马行空),您是在哪里面试的?
因为我也要面试华为,作C方面,哪里有关于C方面的试题,在次谢谢知道的各位高手!
Flamesong 2003-03-31
  • 打赏
  • 举报
回复
星期六去面试了,果然要考试,考的就是那个C++试题,好像很多人做的就是这个,要说难一点的就是那道中级题,请见
http://expert.csdn.net/Expert/topic/1560/1560502.xml?temp=.3257715
我自我感觉也觉得这考试是挺基础的,其实在纸上做题没什么实际意义,上级一试不就出来了吗?!但是可能是我自以为是了,华为好像挺注重出生的--那个学校毕业,还有华为的招人方式是每周通知三十到四十人去,在这中间挑一到二个人出来,我大概不是最好的。
fireinsky 2003-03-31
  • 打赏
  • 举报
回复
加油了,同志,希望你可以PASS
zhanggangyi 2003-03-31
  • 打赏
  • 举报
回复
关注
heartlove 2003-03-31
  • 打赏
  • 举报
回复
甚至第四题回答表述也错误
加载更多回复(52)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧