05 2014 档案
摘要:总的来说C++09跟C++98相比的变化是极其重大的。这个变化体现在三个方面,一个是形式上的变化,即在编码形式层面的支持,也就是对应我们所谓的编程范式(paradigm)。C++09不会引入新的编程范式,但在对泛型编程(GP)这个范式的支持上会得到质的提高:concepts、variadic-tem...
阅读全文
摘要:1、右值引用引入的背景临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下Copy E...
阅读全文
摘要:一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作
阅读全文
摘要:为什么需要系统调用?主要有以下两方面原因。 (1)系统调用可以为用户空间提供访问硬件资源的统一接口,以至于应用程序不必去关注具体的硬件访问操作。比如,读写文件时,应用程序不用去管磁盘类型,甚至于不用关心是哪种文件系统。 (2)系统调用可以对系统进行保护,保证系统的稳定和安全。系统调用的存在规定了用户
阅读全文
摘要:fopen /open区别UNIX环境下的C对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别。1. fopen系列是标准的C库函数;open系列是POSIX定义的,是UNIX系统里的system ca...
阅读全文
摘要:在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关...
阅读全文
摘要:在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关系...
阅读全文
摘要:老的C语言程序员中有一种倾向,就是把很短的执行频繁的计算写成宏,而不是定义为函数。完成I / O的g e t c h a r,做字符测试的i s d i g i t都是得到官方认可的例子。人们这样做最根本的理由就是执行效率:宏可以避免函数调用的开销。实际上,即使是在C语言刚诞生时(那时的机器非常慢,...
阅读全文
摘要:宏:就是使用一个字符串来代替一个表达式代码或函数调用代码;编译之前,预处理器会使用这个宏字符串所代表的表达式代码或函数调用代码来替换所有出现的宏字符串,这样的话,用宏表示的函数调用代码就不用另外开辟函数栈,不用保护和恢复函数调用现场,这样就提高了代码的执行效率;所以,调用一个宏比调用一个函数更有效;
阅读全文