随笔分类 - C++学习
C++学习的体会和相关细节
摘要:注意代码生成的四个选项MD,MDd,MT,MTd,分别代表的是多线程dll(链接libcmt),多线程dll调试模式,多线程静态链接(链接MSVCRT.LIB),多线程静态链接调试模式。开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本/MTLIBCMT.LIB多线程静态链接的Release版本/MTdLIBCMTD.LIB多线程静态链接的Debug版本/clrMSVCMRT.LIB托管代码和非托管代码混合/clr:pureMSVCURT.LIB纯托管代码在使用LIB进行文件的链接操作时,可能会产生一系列的错误,
阅读全文
摘要:为了保证一个头文件不被多次包含,我们使用宏定义来进行避免,有两种方法,介绍如下,并对它们进行区别:1.#ifndef DFNAME #define DFNAME ...... #endif2.#pragma once两种方法都可以防止头文件被多次包含,但是它们是有区别的。第一种方法使用宏定义,排除了文件被多次包含可能。缺点:有可能两个不同的头文件,宏名字相同,导致找不到对应头文件。第二种方法使用编译器默认的定义,可以排除文件包含可能,根据头文件名字进行排除。缺点:不能排除头文件名不同,但是内容完全相同的头文件。
阅读全文
摘要:维基百科说明(中文的实在太不详细,英文的够全面): http://zh.wikipedia.org/wiki/%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88 http://en.wikipedia.org/wiki/Smart_pointer智能指针:智能指针的提出是为了减少指针错误使用的风险(如边界越界、野指针、内存泄露等),使用智能指针,能够自动进行垃圾的回收和处理。保留效率的情况下,提升安全性。智能指针主要用于内存管理,也用于网络资源的管理等。如果某一语言已经有了完善的内存回收机制(如java C#),则智能指针的存在是没有意义的。实现...
阅读全文
摘要:static_cast与reinterpret_cast均是强制转换符,它们的区别如下:(1)static_cast要相对安全一些,而reinterpret_cast不那么安全。(2)static_cast被作为隐式转换使用,reinterpret_cast被作为二进制转换重新解释(没有数位损失)。即操作的对象不同,一个针对类,数据类型的转换,一个是针对二进制位上的copy。注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。http://baike.baidu.com/view/1263731.htm
阅读全文
浙公网安备 33010602011771号