effective c++
文章平均质量分 74
王教余
码农
展开
-
大小端、位段(或者叫位域)和内存对齐
听到好几个朋友说到去一些公司做面试,总是遇到关于大小端、位段(或者叫位域)和内存对齐的考题,然后就不知所措了。虽然我认为很多开发根本就用不到这个,但是我认为很有必要学习理解这些知识点,因为它可以让你更了解C++的,了解程序在内存的运行情况,也能加深对计算机系统的理解。 声明:由于本文的代码会受到计算机环境的影响,故在此说明本篇博文中的程序的运行环境。 1、Mi转载 2013-01-30 13:29:38 · 2835 阅读 · 0 评论 -
重载debug版本的operator new和operator delete
在实际调试中为了调试方便,我们通常重载一些库函数,在这篇文章中我会重载operator new和operator delete(注意不是new operator和delete operator),让它们可以打印出一些额外信息(程序通过VS2008编译运行)#include void* operator new(std::size_t size,char* file,int line)//重原创 2013-03-29 11:06:17 · 902 阅读 · 0 评论 -
c++保证对象在创建时正确初始化
通常如果你使用c part of c++,而且初始化会招致运行期成本,那么你可以不保证初始化,但是一旦进入c++ no_part of c,那么你一定要保证对象正确初始化,这就是为什么在c中array没有初始化,但是到了C++中vector却在对象建立时候调用construtor 初始化,但是我们一定要避免出现C++对象的伪初始化(assigned初始化),下面代码说明,一下代码通过VS2008编原创 2013-03-17 15:35:54 · 860 阅读 · 0 评论 -
不需要编译器自己生成的函数,就应该明确拒绝
不需要编译器自己生成的函数,就应该明确拒绝在C++类的设计中要注意防止类自身生成的函数对实际应用的干扰。举个例子:一个表示个人信息的类,class PersonalInformation{ ..... };,对于个人信息,从原则上来说不可能一样的,但是实际操作时候我们可能会出现PersonalInformation p1 = p2;这样的assigned操作。这对于这个类毫无用处,而且会产生一原创 2013-03-22 09:17:47 · 722 阅读 · 0 评论 -
C++异常机制的实现方式和开销分析
C++异常机制的实现方式和开销分析白杨http://baiy.cn 在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要做到这点,就必须要了解语言中每个特性的实现转载 2013-03-22 20:19:30 · 792 阅读 · 0 评论 -
C++利用new_handler()函数处理异常
C++利用new_handler()函数处理异常C++规定,new_handler要执行下述操作中的一种:(1)使new有更多的内存使用,然后返回(2)抛出一个bad_alloc异常或者其派生异常(3)调用abort或者exit退出下面举例说明,程序通过VS2008编译运行#include #ifndef NUL#define NUL '\0'#endifc原创 2013-03-28 09:20:03 · 841 阅读 · 0 评论 -
c/c++性能优化--I/O优化(上)
这节本想直接介绍I/O优化的,后来思考一下有必要对常用的I/O操作函数的特点介绍一下,这样要好些。下面就先介绍和I/O有关的库函数(以C99为准)不同的操作系统有不同的文件管理方式,现行的主要有FAT(fileallocation table)、FAT32、NTFS(new technoly file system)、NWFS(netware file system)以及UFS(unix file system)当然还有一些分布式文件管理系统如:AFS(andrew filesystem)、DFS、Mic原创 2013-07-14 22:52:46 · 4534 阅读 · 0 评论