- 博客(16)
- 资源 (21)
- 收藏
- 关注
原创 [C++再学习系列] 跨编译单元的对象初始化
跨编译单元的对象初始化C++对跨编译单元的名字空间级对象初始化顺序并未做定义。不仅如此,在调用对象自身的构造函数之前,编译器已经对名字空间级对象做了”零初始化”,即将内存值全部置零(不同于未初始化)。因此,绝对不能假定名字空间级对象的初始化顺序,更不能让名字空间级对象的初始化过程互相依赖。编译单
2009-07-31 21:07:00 1289
原创 [C++再学习系列] 全局或静态变量(对象)的初始化
全局或静态变量(对象)的初始化对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的;如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化。由于内置变量无须资源释放操作,仅需要回收内存空间,因此程序结束后全局内存空间被一起回收,不存在变量依赖问题,没有任何代码会再被执行! C++引入了对象,这给全局变量的管理带领
2009-07-31 20:45:00 1571
原创 [C++再学习系列] 函数模板和类模板
函数模板和类模板C++提供类模板和函数模板。函数模板允许重载,而类模板不允许重载(类无重载概念)。类模板可以进行全特化和偏特化,而函数模板仅能够全特化。因此,写一个看似函数模板偏特化的函数模板实际上是在写一个单独的主函数模板!由于函数模板可以重载,因此存在重载决议。但是记住,函数模板特化并不参与重载。只有在某个主模板函数被重载决议选中的前提下,其特化版本才有可能被使用。
2009-07-30 21:44:00 1592 3
原创 [C++再学习系列] 模板函数的自定义点
模板函数:在编写模板时,可以通过一些显示的自定义,对模板参数类型做一些必要的限制:选择1: 模板直接依赖于类型具有给定名字的合适的成员函数, 则显式要求参数T提供该成员函数.选择2: 模板依赖于”类型具有给定名字的合适的非成员函
2009-07-30 21:17:00 2194 2
原创 [C++再学习系列] 深入new/delete:类域的operator new重载
类域的operator new重载为class 重载 operatornew 时必须定义为类的静态函数(默认为static函数)。重载operator new更多的是为了提高程序效率,比如使用静态内存代替动态分配,启用小对象分配器等。但是要正确重载类域的opera
2009-07-16 21:56:00 1553
原创 [C++再学习系列] 深入new/delete:Operator new的全局重载
Operator new的全局重载我们经常看到这么一句话:operator new可以重载,placement new不可重载。其实此处所说的不可重载应该是指全局的placement new不可重载,对于类域中的placement new是可以重载的,而且只要重载了任何一种形式的operator new
2009-07-16 21:52:00 5325 3
原创 [C++再学习系列] 深入new/delete:New的3种形态
New的3种形态:new operator、operator new、placement newnew 操作符(new 表达式, newoperator, new expression): 通常我们调用 X * pX = new X 时使用的就是这个操作符
2009-07-14 22:16:00 1635 1
原创 [C++再学习系列] 具有链接的C++实体
具有链接的实体,包括名字空间级的变量和函数,都是需要分配内存的。具有链接的实体如果在源文件(cpp)中出现多次,将意味着多次分配内存,每个内存空间定义一个特定的实体。这会导致:1) 空间膨胀;2) 出现多个变量,变量的状态不共享。 因此,不能将下面的代码放在头文件:// avoid defining ent
2009-07-11 17:13:00 1089
原创 [C++再学习系列] 类常量
C++标准允许在类的定义中定义静态整数常量,但其他类型的类常量则需要单独的定义或将常量封装在函数中。举例: // File widget.hclass Widget { static const int defaultWidth= 400; // value provided indeclaration static const doubl
2009-07-11 17:05:00 618
原创 [C++再学习系列] 避免使用宏
避免使用宏宏是一种文本替换设施,宏替换发生在编译器的预处理阶段,此时C++的语法和语义规则并未去作用,无法对宏的进行任何检查,这将为后续生成代码的编译埋下隐患。此外。宏语法仅能理解小括号和方括号,并不识别template的方括号。举例: MACRO( Foo<int,double> )虽然Foo是一个C++实体
2009-07-11 17:02:00 724
原创 [C++再学习系列] 隐式类型转换与转换操作符operator T
隐式类型转换与转换操作符operatorTC++标准允许隐式类型转换,即对特定的类,在特定条件下,某些参数或变量将隐形转换成类对象(创建临时对象)。如果这种转换代价很大(调用类的构造函数),隐式转换将影响性能。隐式转换的发生条件:函数调用中,当参数类型不匹配,如果隐式转换后能满足类型匹配条件,编译器将启用类型转换。控制隐式类型转换
2009-07-05 21:26:00 2176
原创 [C++再学习系列] 二元操作符重载
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2009-07-05 21:18:00 976
原创 [C++再学习系列] 析构函数不能失败的理由
析构函数不能失败的理由析构函数非常特殊,编译器将在不同的上下文中自动调用。由于其特殊性,C++标准有如下建议:在栈展开过程中,如果析构函数抛异常,terminate函数将被调用。因此,析构函数应该总是能够捕获异常,并且不会让异常传播到析构函数之外。(STL中的所有析构函数均不会失败)。
2009-07-02 21:39:00 4488 12
原创 [C++再学习系列] 虚函数的4条规则
虚函数的4条规则对于常规的基类函数来说:1 尽量使用非虚拟接口模式(NVI)让接口函数成为非虚拟的.2 尽量让虚函数成为私用的.3 只有当派生类需要调用基类对某个虚函数的实现时,才把虚函数声明为保护的.4 基类的析构函数应该要么为共有虚函数
2009-07-02 21:32:00 1022
原创 [C++再学习系列] 可访问性问题
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2009-07-02 21:22:00 811
原创 [C++再学习系列] 派生类函数的重实现规则(override-覆盖)
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2009-07-02 21:02:00 1543 2
sqoop官方文档学习笔记
2018-04-25
Introduction to Linux Commands
2010-06-13
Basic unix socket programming
2010-06-13
淘宝店铺交易提醒C#源码
2010-01-06
淘宝账户看门狗C#源码
2010-01-06
Google Notebook for Firefox_3_5
2009-08-16
Google Android SDK开发范例大全范例源码(7-10)
2009-06-18
Google Android SDK开发范例大全范例源码
2009-06-18
流媒体服务器缓存技术研究(硕)
2008-06-21
基于DSP的电动车用PMSM的控制方法(本科论文)
2008-05-31
C/C++常见细节性笔试题
2008-05-30
程序员笔试面试精粹
2008-05-25
JavaProgamDesignCode
2007-10-14
Better.Faster.Lighter.Java
2007-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人