代码改变世界

[C++再学习系列] 跨编译单元的对象初始化

2010-10-21 22:06 by zhenjing, 917 阅读, 0 推荐, 收藏, 编辑
摘要:C++对跨编译单元的名字空间级对象初始化顺序并未做定义。不仅如此,在调用对象自身的构造函数之前,编译器已经对名字空间级对象做了”零初始化”,即将内存值全部置零(不同于未初始化)。因此,绝对不能假定名字空间级对象的初始化顺序,更不能让名字空间级对象的初始化过程互相依赖。 阅读全文

揭秘:C++编译器的函数编译流程

2010-10-20 09:35 by zhenjing, 5110 阅读, 2 推荐, 收藏, 编辑
摘要:介绍C++编译器在解析函数调用所涉及的三大步骤(流程):a)名字查找;b)重载决议;c)可访问性检查。了解编译器的工作流程有助于解释很多编译器的编译错误,并防止写出无法通过编译的代码。如能真正理解这些规则,很多C++编译错误就很容易解释了。 阅读全文

常见算法笔试或面试题

2010-10-18 10:12 by zhenjing, 48802 阅读, 13 推荐, 收藏, 编辑
摘要:3年前,找完工作后,总结的算法笔试面试题,首次公开。共25道题,有些题曾在面试中多次被问过,算是经典题目。 阅读全文

Job攻略总则(IT类)

2010-10-17 21:44 by zhenjing, 1409 阅读, 0 推荐, 收藏, 编辑
摘要:找一份IT类的工作,相对容易,但是找一份满意的,就不是那么容易。IT类的公司非常多,招聘的标准各异,虽都有笔试面试,但考核的内容差异比较大。这里仅仅是做一个大体的概述,希望具有一定的意义。(这是3年前找完工作后做的总结,发得有点晚,希望对现在找工作的人还有点帮助。) 阅读全文

轻松面试找到理想员工-非官方的面试技术指南

2010-10-17 21:25 by zhenjing, 953 阅读, 2 推荐, 收藏, 编辑
摘要:Joel Spolsky写的。以面试官的角度,谈他的个人面试指南。对于应聘者很有参考价值,你会知道面试官是怎么思考的,想找什么样的人。 阅读全文

[C++再学习系列] 全局或静态变量(对象)的初始化

2010-10-15 13:11 by zhenjing, 4883 阅读, 1 推荐, 收藏, 编辑
摘要:对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的;如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化。由于内置变量无须资源释放操作,仅需要回收内存空间,因此程序结束后全局内存空间被一起回收,不存在变量依赖问题,没有任何代码会再被执行! C++引入了对象,这给全局变量的管理带领新的麻烦。C++的对象必须有构造函数生成,并最终执行析构操作。由于构造和析构并非分配内存那么简单,可以相当复杂,因此何时执行全局或静态对象(C++)的构造和析构呢?这需要执行相关代码,无法在编译期完成,因此C++标准规定:全局或静态对象当且仅当对象首次用到时才进行构造,并通过atexit()来管理对象的生命期,在程序结束之后(如调用exit,main),按FILO顺序调用相应的析构操作! 阅读全文

分享一个很好玩的购物网站:立即购

2010-10-14 23:51 by zhenjing, 824 阅读, 0 推荐, 收藏, 编辑
摘要:一个很好玩的购物网站:立即购(http://www.lijigou.com),最好玩的会员服务:立即拍。极力建议去尝试尝试,反正又不会吃亏。 阅读全文

[C++再学习系列] 具有链接的C++实体

2010-10-14 17:32 by zhenjing, 538 阅读, 1 推荐, 收藏, 编辑
摘要:具有链接的实体,包括名字空间级的变量和函数,都是需要分配内存的。具有链接的实体如果在源文件(cpp)中出现多次,将意味着多次分配内存,每个内存空间定义一个特定的实体。这会导致:1) 空间膨胀;2) 出现多个变量,变量的状态不共享。 个人理解:何为具有链接的实体呢?通常而言,变量和函数的定义即是。 阅读全文

[C++再学习系列] 变量的声明、定义与extern关键字

2010-10-12 13:14 by zhenjing, 1216 阅读, 1 推荐, 收藏, 编辑
摘要:A definition of a variable allocates storage for the variable and may also specify an initial value for the variable. There must be one and only one definition of a variable in a program. A declaration makes known the type and name of the variable to the program. A definition is also a declaration: When we define a variable, we declare its name and type. We can declare a name without defining it by using the extern keyword. A declaration that is not also a definition consists of the object's 阅读全文

[C++再学习系列] 变量与声明时初始化

2010-10-12 11:24 by zhenjing, 1444 阅读, 1 推荐, 收藏, 编辑
摘要: 未初始化的变量常常会导致一些奇怪的bug,有时还真不好调式。养成在初始化变量的习惯有利于减少编程错误,提高程序质量。 C++提供了构造和析构函数,其中构造函数就是为初始化而设计的;对于内置变量(char,int,long等)的初始化C++无能为力,其默认行为是未初始化,故其值依赖于变量类型(是否为static)和编译器。 本文中将讨论两类基本变量:标量和数组,标量指单一变量,数组本质上就是一整块内存空间(别忘了memset)。其他数据结构均基于这两类基本变量,一般由库提供,比如著名的C++ STL容器。 阅读全文