摘要: 一个常见的面试题就是问“一个空类占几个字节”,想当然的是0个字节,但事实上类要区分不同的对象,比如:1 EmptyClass obj1;2 EmptyClass obj2;即便是空类,也要能识别obj1和obj2的不同,所以空类仍然要占字节数,一般占一个字节。还有一个针对空类的问题是“一个空类里面有什么”,就是想问编译器为这个空类自动生成了哪些成员函数。很容易想到的是生成了默认的构造函数和析构函数,事实上还有拷贝构造函数和赋值运算符,所以,总共生成了四个成员函数。具体地说,就是你表面上写了1 Class EmptyClass2 {3 };但实际编译器为你加了四个成员函数,所以看起来像这样: 1 阅读全文
posted @ 2013-03-17 12:43 Jerry19880126 阅读(1033) 评论(0) 推荐(2) 编辑
摘要: 1. 内置类型C++中的内置基本类型,比如int,double,float等,初值都是垃圾值,即声明int i,i的初值是一个垃圾值。本书建议的最佳处理方法是:永远在使用对象之前将之初始化。比如:1 int x = 0;2 3 const char* test = “hello world”;4 5 double d; cin >> d;2. STLC++提供了丰富的容器,比如vector,list,deque,map和set等,这些容器已经写好了构造函数,所以总会自动初始化成默认值,程序员可以直接使用,比如:vector<int> vt; vt.push_back(3 阅读全文
posted @ 2013-03-09 10:19 Jerry19880126 阅读(2129) 评论(0) 推荐(2) 编辑
摘要: const是常量的意思,它可以定义一个不可改变的量,主要用于以下几个地方:1. 修饰变量,使之不可改变举个例子:const int var = 3;此时var的值就不能改变了。也正是因为const的变量不能轻易修改存储的值,所以在声明的时候就要初始化,这样就是不行的:const int var;编译器就会报错。2. 修饰指针指针是特殊的变量,有时我们希望对它所指向的对象操作,而有时我们又希望对指针本身进行操作。同样,const应用于指针也有两个含义:一个是指向常量(指向的内容不可更改),一个是常量指针(指针的指向不可更改)。看下面这两个例子:const int* p = &a;/* p 阅读全文
posted @ 2013-03-01 21:43 Jerry19880126 阅读(1553) 评论(1) 推荐(1) 编辑
摘要: 其实这个条款分成两部分介绍会比较好,第一部分是用const和enum替换不带参的宏,第二部分是用inline替换带参的宏。第一部分:用const和enum替换不带参宏宏定义#define发生在预编译期,而const,enum定义的常量发生在编译期,两者的重要差别在于编译期里的变量是进符号表的,而预编译期的宏是简单的替换,不进符号表。因此,const, enum定义的常量具有以下优势:(1)支持类型检查(2)支持访问权限第(1)条优势,其实在Visual Studio编译器也已经对宏也引入了类型检查了,但不是所有的编译器都这样;第(2)条优势是指可以把这些常量放在类中,从而避免了全局的作用域,而 阅读全文
posted @ 2013-02-24 22:18 Jerry19880126 阅读(1397) 评论(2) 推荐(2) 编辑
摘要: C++起源于C,最初的名称为C with Classes,意为带类的C语言,然而,随着C++的不断发展和壮大,在很多功能上已经远远超越了C,甚至一些C++程序员反过来看C代码会觉得不习惯。C++可以看成由四个部分组成,分别是:(1) C。C++从语法和代码风格上以C为基础,这也正是C++命名的由来,是在C的基础上++。有意思的是,在《C++ Primer》这本书里有一个问题,问为什么C++叫“C++”而不叫“++C”呢?原因很简单,C++具有深厚的C的底蕴,++C也许得到的是D,象征着另一种语言,而C++返回的还是C,表明它是站在C这个巨人的肩膀之上的。(2) 面向对象。面向对象编程是C++不 阅读全文
posted @ 2013-02-24 11:09 Jerry19880126 阅读(1154) 评论(0) 推荐(1) 编辑
摘要: 计时函数(二)boost库中提供了更精确计时函数,这是因为其所包含了date_time库中提供了秒和微秒的时钟。下面分成两部分,第一部分介绍boost库的配置,第二部分介绍如何获得微秒级的计时。第一部分:boost库的配置从 www.boost.org 中下载boost函数库,里面有个HTML形式的帮助文档,打开index.htm或者index.html即可看到分层别类的帮助信息。阅读帮助文档是学习新知识最直接最方便的方法。date_time需要编译才能使用其完整功能(不编译其实也行,只是每次编译器都会对包含的头文件进行编译,速度相对于已经编译好的文件而言会慢一些),编译方法如下:1. 运行b 阅读全文
posted @ 2013-02-20 21:56 Jerry19880126 阅读(2423) 评论(0) 推荐(0) 编辑
摘要: 计时函数(一) 欢迎讨论http://www.cnblogs.com/jerry19880126/ 所谓“时”,可以分成时间点和时间段两大类,时间点的概念就好比知道现在是几时几分,而时间段主要用于计量这段程序运行了多久,或者用于定时触发中断。C/C++中有多种方法可以实现计时。 1. 用time() 阅读全文
posted @ 2013-01-05 16:48 Jerry19880126 阅读(5951) 评论(2) 推荐(0) 编辑
摘要: 布局与风格愿我的读书笔记带你翻过45页的书 http://www.cnblogs.com/jerry19880126/布局主要是代码的书写方式,也包括注释,简单来说,就是你的源文件的样式。“恐怖”的代码布局会让你不想再多看一眼代码,比如:但是好的布局会让你有更集中的精力对付代码中的逻辑,而不是去分层断句,比如下面的代码布局就好多了:我觉得书上有一段引用很好,“傻子都会写让计算机理解的代码;而优秀的程序员写的是人能看懂的代码”。优秀的程序员写出的代码会有良好的布局,因为好的源码布局有助于:(1) 准确表现代码的逻辑结构(2) 始终如一地表现代码的逻辑结构(3) 改善可读性(4) 经得起修改下面着 阅读全文
posted @ 2012-12-26 17:09 Jerry19880126 阅读(648) 评论(0) 推荐(0) 编辑
摘要: 控制循环愿我的读书笔记能带你翻过20页的书http://www.cnblogs.com/jerry19880126/首先复习一下循环的种类,主要分成for循环与while循环。其中for循环在已知执行次数时使用,比如for(int i = 0; i < 10; ++i)就是指针循环10次;while循环多用于执行次数未知的场合,往往要添加一定的条件,比如while(条件){…},当条件满足时会执行循环体内的代码,执行完一次后,再去判断条件是否满足,依此规律执行下去。while还有do…while的变式,即do{…}while(条件),这种情况下循环体是至少执行一次的。但在实际编程中,更常 阅读全文
posted @ 2012-12-25 22:36 Jerry19880126 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 组织直线型代码 + 使用条件语句希望我的读书笔试能带你翻过18页的书http://www.cnblogs.com/jerry19880126/《代码大全》第14章和第15章的内容比较少,这里就写在一起了。首先看第14章——组织直线型代码,本章主要讲了两个知识点。第一个知识点是怎样书写出有明确顺序的代码,以书上的例子来说:1 data = ReadData();2 results = CalculateResultsFromData(data);3 PrintResults(results);这三行代码具有鲜明的时间顺序,即前一条语句的输出是后一条语句的输入。但如果是这样的代码:1 Comput 阅读全文
posted @ 2012-12-23 14:52 Jerry19880126 阅读(464) 评论(0) 推荐(0) 编辑