- 博客(12)
- 收藏
- 关注
原创 一道面试题
问:已有一个函数f(),它等概率的生成1-5的整数,问如何利用该函数,等概率的生成1-7的整数?解: 先抛开这个问题,换另一个问题进行思考:假若我们现在有一个等概率生成1~35整数的函数g(),如何构建等概率生成1~5整数的f()和等概率生成1~7整数的h()? 这第二个问题似乎很简单,g()/7,g()/5 就可以得到 f()和h()。 所以,原问题的关键在于,如何由f()构建出一个
2007-09-18 13:17:00 858 1
原创 一个有意思的博弈问题
翻书看到一道挺有意思的博弈问题,据说是冯.诺伊曼提出来的。 "三个人持枪决斗。A的枪法最差,成功率为1/3;B的成功率稍好,为2/3;C的枪法最准,每击必中。决斗规则如下:三个人轮流开枪,枪法最差的A有最高的开枪优先级,B次之,C最低。 假设你是A,采取什么样的策略,才能使自己活命的概率最大?" 这题不仔细考虑的话,凭直觉定会选择向C开枪,因为C的威胁最大!如果给C开枪的
2007-09-18 11:53:00 1431
原创 一道简单的笔试题
要求:将C++源代码中的注释去掉即,对于下列源代码#include iostream> // comment1using namespace std;/* comment 2// #include */ int main( int argc,char *argv[] /*comment 3*/ ){ return 1;}/**//**/...处理后应输出#inclu
2007-09-18 10:35:00 1069
原创 VPTR与构造函数和继承
C++中类的成员函数默认情况下是non-virtual,即被调用时为静态绑定。 至少包含一个virtual成员函数的类,都有一个VTABLE——虚函数映射表,表中的每项对应类中一个virtual成员函数的函数体地址。相应的该类的每个对象在为其分配存储空间时,编译器会额外的为每个对象附加一个指针VPTR,该指针指向该对象所属类的VTABLE。 一定要明确概念,VTABLE
2007-09-11 20:03:00 2374 2
原创 几个需要清晰理解的概念
1 名称覆盖 子类若定义了与基类成员名称相同的成员,则基类成员在子类中会被覆盖。这里要理解的是C++的名称掩盖规则(name-hiding rules)是很简单的:只看名称,不区别类型。 此外,如果基类中存在某个成员函数的若干个重载版本,而子类也定义了同名函数(参数类型与返回值是否一致都不重要),则基类所有版本的重载函数都会被覆盖。 例如,下面例子中基类的成员x和 foo()都
2007-09-09 22:47:00 1495
原创 三种继承方式与三种访问权限的相互组合
对基类进行继承时,三种继承方式下,基类的三种访问权限在子类中会有如何的变化这个问题,本科时上C++这门课的时候曾仔细的分析并弄得挺清楚,后来时间久了、用的也不多,慢慢的又变得心里不太有谱了。这次接着准备面试的契机,又重新仔细分析了一番,留个案底,以免再犯糊涂。三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 pri
2007-09-09 22:04:00 9393 1
原创 转型操作的中的一个陷阱
今天看《Effective C++ 3rd》中的第27款时看到的: "关于强制转型的一件有趣的事,是很容易写出看起来似是而非(在其它语言中也许是对的)的代码。例如,许多应用程序框架要求 derived classes中的virtual member function要首先调用 base class(的对应函数。假设我们有一个 Window base class(基类)
2007-09-08 23:55:00 1425 3
原创 for循环体中定义的变量的生存期
在for的循环体中定义的non-static对象,其生存期仅限于一次循环迭代,即在本次循环结束时,对象会被自动销毁。 试验代码如下:#include iostream>using namespace std;class A...{public: A()...{cout"in ctor of A"endl;} A(A&)...{cout"in copy ctor
2007-09-08 23:19:00 5713 1
原创 local static对象和non-local static对象在初始化时机上的差异
C++中的static对象是指存储区不属于stack和heap、"寿命"从被构造出来直至程序结束为止的对象。这些对象包括全局对象,定义于namespace作用域的对象,在class、function以及file作用域中被声明为static的对象。其中,函数内的static对象称为local static 对象,而其它static对象称为non-local static对象。 这两者在
2007-09-08 06:38:00 7627
原创 由一道面试题想到的
注:近日同学拿着《程序员面试宝典》这本书中的一道面试题来跟我讨论题目大意如下: int i =1; j=(i++)*(i++); k=(++i)*(++i); 则j=?,k=?本猪看了一阵恶心,服了,国内的教材和考试、面试怎么总喜欢鼓捣这些不入流的trick?以本题为例,所谓的trick根本就是错误!根据C++标准的规定,这样的语句属于Undefine
2007-09-06 10:44:00 2328 1
原创 linux若干实用命令
#统计磁盘空间的占用情况du -s * | sort -nr > $HOME/space_report.txt#进行“更新"复制,即只对新增和修改日期更新的文件执行复制操作cp -u # 显示当前目录下最近更新的10个条目ls -lt | head # 统计并按降序显示当前目录下所有条目所占的磁盘空间du -h | sort -nr# 显示当前目录及其子目录中包含的文件数fin
2007-09-05 00:41:00 995
原创 bash 杂记
I/O 重定向:“>”和“>>"的区别在于前者导致overwrite,而后者则导致append。一个命令的标准输出和标准输入都可以被重定向,而且顺序并不产生影响。bg(shell内置命令)——可将进程设为后台进程echo $PATH ——显示环境变量中的路径export PATH=$PATH:directory——可用于添加shell的搜索路径cd、pwd都属于shell的内置命令可在shell中
2007-09-05 00:40:00 1182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人