随笔-22  评论-7  文章-0  trackbacks-0
@wolfssss
float f = (float)(v - 1);
v减不减一的区别在于

float f = (float)(v - 1);
求的是大于等于N且为2的次方的最小的数

float f = (float)(v);
求的是大于N且为2的次方的最小的数
re: 迅雷笔试题(C++) 楚天清秋 2010-09-26 20:04
汗一把,直接
for(int i = 0;i < N; ++i)
a[i] = i+1;

结束了
第i件物品的费用是c[i]....
应该形容为 第i件物品的体积是c[i].... 吧
re: LingosHook:Lingoes生词本下载页 楚天清秋 2010-07-14 13:02
似乎对绿色版本的Lingoes无效!
建议增加搜索路径
re: 关于sizeof(类)的大小 楚天清秋 2010-06-09 12:12
还是没明白。。。。
re: 关于sizeof(类)的大小 楚天清秋 2010-06-02 10:06
@Sunshine Alike
情况1的时候同样,为啥结果不同。。。。
re: JKRQ:日语汉字词汇读音查询工具 楚天清秋 2010-05-17 13:30
不错,
@北海鲲鹏
谢谢,代码写了也调试过,就是不明白

A* p = new B;
delete p;

为什么 先执行A的析构函数,然后B的析构就不执行了。

------------
如果改成
B* p = new B;
delete p;

结果很显然,会打印
"~B"
"~A"
class A
{
public:
A(){cout<<"~A"<<endl;}
};

class B:public A
{
public:
B(){cout<<"~B"<<endl;}
};

main()
{
A* p = new B;
delete p;

return 0;
}

---------------------------------
如果上例改成构造函数的话,应该是打印
"~A"
"~B"
A* p = new B;
delete p;

~~~~~~~~
delete p;
A的指针,但实例是B的,
到底是先执行A的析构函数,还是B的析构函数。
如果是先执行A的析构函数,A的析构函数由于不是Virtual的,所以不会执行B的析构函数,这就说得通!

@小时候可靓了
照理说析构时时先 执行自己的析构函数,然后执行父类的析构函数,如果有多继承,按照父类的声明顺序来执行析构函数。

A* p = new B;
delete p;
所以应该是
A和B的析构都执行吧?
1、请问上面输出什么,为什么!
为啥只打出 ~A 呢。。。
用插入代码就不会乱了!