其实delete的作用无非就是释放内存,销毁对象资源。但是关键是c++的对象构造方式有很多种,你可以很灵活的把对象创建在堆上栈上。你可以重载类的new,delete。
C++ FAQ上就给一句话“只要你delete this以后别再碰this就可以,但是不推荐这么干”
但是实际上有N多商业实现和库会用delete this。举个某著名的GUI库,非模态对话框在关闭时就是一句delete this。
此问题的关键是那个动词“碰”(touch)什么叫碰?调用虚函数,访问成员变量等等都是touch。
不过我个人觉得面试时问语言细节不好。这样会filter出有经验的人不假,但是经验少,有创造力的人往往被filter掉了。
所以我面试时一般问开放问题。不像选择题那样非A就是B,一般人都会回答出,但是有的答案是O(N^2)的,有的是O(logN)的
有的是O(1)的。这样就把水平分出来了。
用memcmp来比较其内存&v1和&v1,比较的长度为numBytes。
关于考察编程基础的面试题,对于写多了程序的人随手可以拈一个来问。很多表面看起来都很一般,但是一细究就会发现难度了。
On 12月10日, 上午11时54分, jinhu wang <wangjinhu...@gmail.com> wrote:
> 去天涯华为专区找找吧。呵呵。
>
> 2009/12/10 Michael <zhonglia...@gmail.com>
>
> > 我也搭车:
> > *不知道这里有没有Huawei的兄弟,小弟也正准备去面试。**有没有高人提示一二.*
> > 大家轻拍!
>
> > 2009/12/10 Jeff Chen <sheismyl...@gmail.com>
>
> >> 说的不错.如果职位需求真的很抠这些细节,那么问一些语言的细节也无妨.
>
> >> 不知道这里有没有cisco的兄弟,小弟正准备去面试。有没有高人提示一二.
>
> >> 2009/12/10 liuxinyu <liuxiny...@gmail.com>
>
> >> 数年前和同事们说过这个问题。
>
> >>> C++ FAQ上就给一句话"只要你delete this以后别再碰this就可以,但是不推荐这么干"
>
> >>> 但是实际上有N多商业实现和库会用delete this。举个某著名的GUI库,非模态对话框在关闭时就是一句delete this。
>
> >>> 此问题的关键是那个动词"碰"(touch)什么叫碰?调用虚函数,访问成员变量等等都是touch。
>
> >>> 不过我个人觉得面试时问语言细节不好。这样会filter出有经验的人不假,但是经验少,有创造力的人往往被filter掉了。
> >>> 所以我面试时一般问开放问题。不像选择题那样非A就是B,一般人都会回答出,但是有的答案是O(N^2)的,有的是O(logN)的
> >>> 有的是O(1)的。这样就把水平分出来了。
>
> >> --
> >> My Blog:http://jeffchen.cn
>
> > --
> > -- ----
> > 此致,
> > 敬礼!
> > -----
> > Michae Zhou(周中良)
> > MSN:z_zhongli...@hotmail.com <MSN%3Az_zhongli...@hotmail.com>
是没有问题的,但这个只是侥幸而已。上述代码其实等于
Mytest *test = new MyTest();
delete test;
test->printInfo();
注意第二句,已经释放了空间,可是第三句运气好的话还能执行。因为test指针的空间在交给操作系统之后暂时并不会被覆盖掉,这时候你去调用
printInfo,会得到一个正确的打印信息。但是。。。这个野指针。。。。。。会在某一天出错。。野指针比Java的空指针更万恶。
On 12月9日, 下午6时08分, pongba <pon...@gmail.com> wrote:
> 今天在很久不上的Reddit上看到一个热帖:最佳C++面试题一道:
>
> Q:能否在成员函数中delete this?
>
> 作者的解释是,对于没有遇到过这个问题的人,这个问题比较考底层知识,同时也考察思路。
>
> 参考:
> 原文:http://blogs.windwardreports.com/davidt/2009/12/the-best-c-interview-...
> reddit:http://www.reddit.com/r/programming/comments/ac1q9/the_best_c_intervi...
On 12月9日, 上午6时54分, 周龙亭 <njdragon...@gmail.com> wrote:
> 1. 对象不是通过 new 创建出来的
> 2. 在析构函数里调用 delete this
>
> 上面两种情况会怎么样?
On 12月10日, 下午2时36分, jinhu wang <wangjinhu...@gmail.com> wrote:
> 怎么还运气啊,好好看看大家的回复吧。printInfo();如果不是虚函数,如果没有写成员变量,永远不会出错,跟你的运气没关系。。
>
> 2009/12/10 fireflyc <firef...@gmail.com>
On Dec 9, 10:05 pm, jinhu wang <wangjinhu...@gmail.com> wrote:
> 依赖于后面的调用。
> 后面没有涉及到对象资源性的调用一般就没有问题:资源包括成员变量、虚函数等
>
> 2009/12/9 pongba <pon...@gmail.com>
>
> > 今天在很久不上的Reddit上看到一个热帖:最佳C++面试题一道:
>
> > Q:能否在成员函数中delete this?
>
> > 作者的解释是,对于没有遇到过这个问题的人,这个问题比较考底层知识,同时也考察思路。
>
> > 参考:
> > 原文:
> >http://blogs.windwardreports.com/davidt/2009/12/the-best-c-interview-...
> > reddit:
> >http://www.reddit.com/r/programming/comments/ac1q9/the_best_c_intervi...
>
> > 其实我想问问大家遇到的类似最佳面试题:语言相关和语言无关的都可。
>
> > --
> > 刘未鹏(pongba)
过话又说回来,"银弹"在国内普通人不知道是干什么东西。
On Dec 9, 8:08 pm, Tinyfool <tinyf...@gmail.com> wrote:
> 银价狂升,所以现在都用铅做子弹了,所以没有银弹
On Dec 9, 6:08 pm, pongba <pon...@gmail.com> wrote:
> 其实我想问问大家遇到的类似最佳面试题:语言相关和语言无关的都可。
我遇到过一个C++的:
struct A{
virtual void foo(void)
{
}
};
struct B : public A
{
B()
{
foo(); // 这里会发生什么?
}
virtual void foo(void)
{
}
};
即使所谓的开放性问题也很难考察创造力,像各种算法题,其实很大程度取决于被面试者原来接触没接触过相似题型,而不是有多大的创造力。