最近在看《深度探索C++对象模型》,学到了很多东西。。。
C++新手一般有两个常见的误解:
1.任何class如果没有定义default constructor,就会被合成出一个来。
2.编译器合成出来的default constructor会显示设定“class 内每一个data member的默认值”
注意:以上两个说法都是错误的!
编译器只会在以下4种情况,并且class自...
分类:
编程语言 时间:
2014-06-20 12:18:41
阅读次数:
224
AOP 各种的实现
AOP就是面向切面编程,我们可以从几个层来实现AOP
编译期---------字节码加载前---------字节码加载后
在编译器修改源代码,在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码,以下是各种实现机制的比较。
类别
机制
原理
优点
缺点
静态AOP
...
分类:
编程语言 时间:
2014-06-20 10:56:25
阅读次数:
170
为算术语言(Arithmetic-Language)实现编译器和解释器
到目前,我们更注重的是语言本身的设计,即前端,没有涉及语言的编译器或解释器的实现,即后端。在这一节,我们将关注后端的实现,由抽象语法树(Abstract Syntax Tree,AST)定义的一种简单的算术语言。第一小节所展示的抽象语法树是基于联合类型的。
在下一章“解析文本”,我们还要回到这个示例,来构建这种语言的...
分类:
其他好文 时间:
2014-06-20 10:48:39
阅读次数:
203
数组是一种复合类型,由类型名+数组名+维度组成。数组定义中的类型可以是C++基本内置类型,也可以是类类型的。数组元素的类型可以是除了引用类型以外的其他任何类型,没有所有的元素都是引用的数组。
数组的维度必须是大于或等于1的编译器常量,所谓的编译器常量就是指在编译期间就可算出结果的表达式,字面值常量,枚举类型,用常量表达式初始化的const对象。任何在编译器无法计算出的值都不可作为数...
分类:
编程语言 时间:
2014-06-20 10:27:20
阅读次数:
268
就像我其他博文中说的,对于软件的优化除开算法,全部都是为流水线服务的.所以优化的时候要时刻记住一这点.由于优化的东西比较杂,我写的不是很好,所以在文章的最后,我会试着提炼出一些通用性的原则.
由于之前在WPS上写的,所以代码没有用模版来排版,各位看官就将就着看吧..我也只是为了提炼一次知识,真正的优化还是认真看一遍书来的好.
有哪些方法优化软件?
通常有两种方式,一种是通过编译器,另一...
分类:
其他好文 时间:
2014-06-20 09:17:09
阅读次数:
321
变量的类型转换采用以下两种方式:
隐式转换:从类型A到类型B可以在所有情况下进行(相当于不同类型变量的赋值),执行转换的规则非常简单,可以让编译器执行转换。
显示转换:从类型A到类型B的转换只能在某些情况下进行,直行转换的规则比较麻烦,应进行某种类型的转换。隐式转换:val1 = val2; ...
分类:
其他好文 时间:
2014-06-20 08:54:53
阅读次数:
310
【为什么C++空类的实例大小为1】
每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址。所以大小为1。参考:http://bbs.csdn.net/topics/370134485
分类:
编程语言 时间:
2014-06-11 21:46:47
阅读次数:
269
Visual C++在创建DLL导出函数时,可能会对原始的函数名做修改。例如:int WINAPI
Add(int nLeft, int
nRight)导出后的函数名称是_Add@8。下面两种方法可使编译器不对导出函数名称做修改:使用def文件在代码中添加:#pragma
comment(linke...
分类:
其他好文 时间:
2014-06-11 12:43:20
阅读次数:
340
算术类型:整型(integral type)char : 一个机器字节(1BYTE =
8BIT)bool: 1 BIT整型: int:
与编译环境相关(不是机器),32位的编辑环境则长度为32BIT,故可以使用sizeof(int)来得到编译器环境的位数(返回的是字节长度)short/long/....
分类:
其他好文 时间:
2014-06-11 11:20:39
阅读次数:
175
之前做过.net,java开发,也写过几个Php的网站,似乎3种主要编程语言都接触了。但是越来越觉得自己对编程的整个流程缺乏一个整体的认识,尤其是底层的机制。譬如网络编程,编译原理,服务器端,数据库存储引擎原理等。于是看了一些书,比较经典的有apue,unp,tcp/ip,nginx,mysql的innodb存储引擎,深入理解jvm。渐渐发现无论用什么语言做开发,背后都有linux,shell,c...
分类:
Web程序 时间:
2014-06-07 12:12:37
阅读次数:
392