随笔分类 -  C++

摘要:真搞不懂,为毛C++这么多类型转换。。 CString m_str(_T("fuck conversion")); char *chr=new char[m_str.GetLength()+1];WideCharToMultiByte(CP_ACP,0,m_str.GetBuffer(),-1,ch 阅读全文
posted @ 2018-02-05 14:56 yzl050819 阅读(410) 评论(0) 推荐(0)
摘要:联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换。联合体对象在同一时间只能存储一个成员的值。联合的内存大小取决于其中字节数最多的成员,而不是累加,联合也会进行字长对齐。在定义联合变量的时候可以指定初始值,但 阅读全文
posted @ 2017-07-21 10:35 yzl050819 阅读(336) 评论(0) 推荐(0)
摘要:不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改 阅读全文
posted @ 2017-07-21 09:41 yzl050819 阅读(121) 评论(0) 推荐(0)
摘要:引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif 1 2 3 4 5 6 7 8 9 #ifdef 阅读全文
posted @ 2017-07-19 16:42 yzl050819 阅读(176) 评论(0) 推荐(0)
摘要:最近做一个验证程序的对话框编程,因为里面要要用到静态链接库,所以就稍微的学习了下静态链接库知识,学习的过程中感觉到了自己所了解的东西实在是少的可怜,更加坚定了自己要更加上进的决心,要把以前所丢掉的都给补回来。 在调用静态链接库文件,也就是.lib文件的时候,需要设置链接库文件的路径让编译链接的时候, 阅读全文
posted @ 2017-07-19 14:51 yzl050819 阅读(579) 评论(0) 推荐(0)
摘要:(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int first, int secend) {/****/}; inline 函数对编译器而言必须是可见的,以便它能够在调用点 阅读全文
posted @ 2017-05-23 10:53 yzl050819 阅读(225) 评论(0) 推荐(0)
摘要:.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。 .h .lib 阅读全文
posted @ 2017-05-09 12:32 yzl050819 阅读(373) 评论(0) 推荐(0)
摘要:DLL的动态链接有两种方法。一种是加载时动态链接(Load_time dynamic linking)。Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。 前天看到这几句,突然设计出一道自认绝 阅读全文
posted @ 2017-05-06 22:13 yzl050819 阅读(644) 评论(0) 推荐(1)
摘要:今天是第一次听到C++还有个转换构造函数,之前经常见到默认构造函数、拷贝构造函数、析构函数,但是从没听说过转换构造函数,隐式转换函数也是一样,C++的确是够博大精深的,再次叹服! 其实我们已经在C/C++中见到过多次标准类型数据间的转换方式了,这种形式用于在程序中将一种指定的数据转换成另一指定的类型 阅读全文
posted @ 2017-05-05 15:12 yzl050819 阅读(1492) 评论(1) 推荐(1)
摘要:线程安全函数 • 概念: 线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 • 确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要 阅读全文
posted @ 2017-05-05 11:08 yzl050819 阅读(838) 评论(0) 推荐(1)
摘要:定义 线程安全:被多个并发的线程反复调用时,他会产生正确的结果。 可重入:当被多个线程调用的时候,不会引用任何共享数据。 Remark:任何线程不安全问题的根源都是“共享数据”。所以,不使用任何共享数据的函数(即:可重入函数)肯定是线程安全的。但这并不等于说,线程安全函数就是可重入函数。为什么呢?因 阅读全文
posted @ 2017-05-05 10:54 yzl050819 阅读(156) 评论(0) 推荐(1)
摘要:在使用C++进行程序开发的时候,有个常识我们很熟悉,就是把类的定义写在.h文件中,把类的具体实现写在.cpp文件中。这毫无疑问是对的。但我们很少去思考为什么要这样做,本文结合自己的学习体会,对头文件及const对象的定义进行一些说明。 1。为什么要使用头文件 使用头文件就是为了在希望使用一些共同函数 阅读全文
posted @ 2017-05-03 16:28 yzl050819 阅读(3742) 评论(0) 推荐(0)
摘要:1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言, C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C+ 阅读全文
posted @ 2017-04-28 10:44 yzl050819 阅读(186) 评论(0) 推荐(0)
摘要:尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。函数对象(也称“算符”)是重载了“()”操作符的普通类对象。因此从语法上讲,函数对象与普通的函数行为类似。 用函数对象代替函数指针有几个优点,首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵 阅读全文
posted @ 2017-04-25 15:57 yzl050819 阅读(162) 评论(0) 推荐(0)
摘要:一.副作用(side effect) 表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副作用( side effect )。副作用是指改变了某些变量的值。 如: 1:20 //这个表达式的值是20;它没有副作用,因为它没有改变任何变量的值。 2:x=5 // 这个表达式的值是 阅读全文
posted @ 2017-04-19 16:43 yzl050819 阅读(324) 评论(0) 推荐(0)
摘要:经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout << a++ << a;C++ 不是规定 << 操作左结合吗? 阅读全文
posted @ 2017-04-19 16:17 yzl050819 阅读(1152) 评论(0) 推荐(0)
摘要:这段时间司在招实习生,而不管是远程的电话面试或者是实际现场面试中领导都喜欢问你这个问题,但是可惜的是能很好答上来的人很少。后来发现不管是应届的实习生,甚至有些实际参加工作几年的人也未必真的了解这个问题。今天想写一篇详解,希望对广大程序员有一定的帮助。 区别1:全局堆句柄不一样。 网上有一个说法,就是 阅读全文
posted @ 2017-03-26 14:26 yzl050819 阅读(332) 评论(0) 推荐(0)
摘要:this对象是必须是用 new操作符分配的(而不是用new[],也不是用placement new,也不是局部对象,也不是global对象); delete this后,不能访问该对象任何的成员变量及虚函数(delete this回收的是数据,这包括对象的数据成员以及vtable,不包括函数代码); 阅读全文
posted @ 2017-03-22 11:46 yzl050819 阅读(717) 评论(0) 推荐(0)
摘要:c/c++强制类型转换 Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转 阅读全文
posted @ 2017-03-21 13:21 yzl050819 阅读(218) 评论(0) 推荐(0)
摘要:在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块): 在ide开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(link error) 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用 阅读全文
posted @ 2017-03-06 10:12 yzl050819 阅读(248) 评论(0) 推荐(0)