
c++
文章平均质量分 56
jieniyimiao
真的英雄,在于,以脆弱的凡人之躯,而具有神性的不可战胜。
展开
-
C++ explicit的作用
explicit作用:(显式的)在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit使用注意事项: * explicit 关键字只能用于类内部的构造函数声明上。 * explicit 关键字作用于单个参数的构造函数。 * 在C++中,explicit关键字用来修原创 2016-03-08 21:57:10 · 1669 阅读 · 0 评论 -
c++ primer 第五版第八章答案
8.1 8.2/** c++ primer exercise.* test file.*/ #include using namespace std;istream & read_write(istream &in){// char cval; int ival; while(in>>ival) cout<<ival<<' ';原创 2015-05-25 17:25:37 · 2482 阅读 · 0 评论 -
实数范围内的求模(求余)运算:负数求余究竟怎么求
背景最近在一道 Java 习题中,看到这样的一道题:What is the output when this statement executed:System.out.printf(-7 % 3);正整数的取余运算大家都很熟悉,但是对于负数、实数的取余运算,确实给人很新鲜的感觉。于是我对此进行了一些探索。我发现,这里面还是颇有一点可以探索的东西的。探究原创 2015-01-26 14:14:46 · 1964 阅读 · 0 评论 -
菜单编写(VC_Win32)
http://blog.youkuaiyun.com/tcjiaan/article/details/8497535http://blog.youkuaiyun.com/kz_ang/article/details/8130955菜单在 .rc 文件中的格式.rc 中的菜单格式虽然现在微软的编译器中都会自动生成好用的 rc 资源但是还是可以了解下它内部代码的意义.原创 2015-01-06 10:03:31 · 1318 阅读 · 0 评论 -
C++中cout输出字符型指针地址值的方法
#include#includeusing namespace std;int main(){char c[3]={'a','b','c'};char *p=c;coutcout(p+1)cout(p+2)system("pause");return 0;}若要打印地址请用void*,否则 p会被认为是字符串。原创 2015-02-09 08:51:35 · 9160 阅读 · 0 评论 -
C++实现百分号进度条的程序
#include#include//Sleep调用using namespace std;int main(){ std::cout << "\n正在输出记录数据...... "; for( int i=0; i <= 100; i++ ) // 打印百分比 { std::cout.width(3);//i的输出为3位宽 std::cout << i原创 2015-02-09 08:42:24 · 10316 阅读 · 0 评论 -
C++ 类访问控制public/private/protected探讨
摘要:本文是从饮水思源BBS C/C++版上一篇帖子引发的思考。当时看到帖子,突然觉得平时见惯了的,在这里似乎变得陌生了,究竟访问控制符怎样起作用,怎样使用,该怎样理解,本文试图给出讨论。原帖如下 1 #include 2 using namespace std; 3 4 class A{ 5 public: 6 A(int i_,int j_)原创 2015-02-07 11:29:45 · 1433 阅读 · 2 评论 -
字符串和编码
字符编码我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的原创 2014-12-09 16:54:48 · 1026 阅读 · 0 评论 -
#ifdef __cplusplus extern "C" { #endif”的定义
看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事:Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的原创 2015-01-13 20:06:41 · 1615 阅读 · 0 评论 -
IEEE 754 浮点数的表示精度探讨
IEEE 754 浮点数的表示精度探讨前言从网上看到不少程序员对浮点数精度问题有很多疑问,在论坛上发贴询问,很多热心人给予了解答,但我发现一些解答中有些许小的错误和认识不当之处。我曾经做过数值算法程序,虽然基本可用,但是被浮点数精度问题所困扰;事情过后,我花了一点时间搜集资料,并仔细研究,有些心得体会,愿意与大家分享,希望对IEEE 754标准中的二进制浮点数精度及其相关问题给予较原创 2014-11-05 20:25:09 · 1806 阅读 · 0 评论 -
使用doxygen为C/C++程序生成中文文档
文章来自:http://www.fmddlmyy.cn/text21.html按照约定的格式注释源代码,用工具处理注释过的源代码产生文档。通过这种方式产生文档至少有以下好处:便于代码和文档保持同步。可以对文档做版本管理。很多编程语言都有类似的文档工具,例如:Java有javadoc,Ruby有rdoc。对于C/C++程序,我们可以用Doxygen生成文档。本文通过为一个C+原创 2014-10-16 21:24:06 · 2171 阅读 · 0 评论 -
为什么operator<<>>运算符重载一定要为友元函数呢?
如果是重载双目操作符(即为类的成员函数),就只要设置一个参数作为右侧运算量,而左侧运算量就是对象本身。。。。。。而 >> 或。。。。。。。。就只能申明为友元函数了。。。如果一定要声明为成员函数,只能成为如下的形式:ostream & operator{ return output;}所以在运用这个data不合符人的习惯。原创 2015-06-11 21:01:55 · 7645 阅读 · 1 评论 -
C++primer书店程序
#include #include #include #include #include using namespace std;class Sales_data{ friend std::istream& operator>>(std::istream&, Sales_data&); friend std::ostream& operator<<(std::ost原创 2015-07-01 18:04:48 · 3045 阅读 · 3 评论 -
C++中类的构造函数调用顺序
当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。下面的这个程序说明这个问题总结下原创 2015-09-23 17:02:28 · 6617 阅读 · 0 评论 -
main函数执行前、后再执行的代码
一、main结束 不代表整个进程结束 (1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行; 用atexit注册的函数也会在main之后执行。 (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作 (3)进程原创 2015-10-09 17:51:23 · 1953 阅读 · 0 评论 -
STL中set底层实现方式? 为什么不用hash?
红黑树与hash table最大的不同是,红黑树是有序结构,而hash table不是。但不是说set就不能用hash,如果只是判断set中的元素是否存在,那么hash显然更合适,因为set 的访问操作时间复杂度是log(N)的,而使用hash底层实现的hash_set是近似O(1)的。然而,set应该更加被强调理解为“集合”,而集合所涉及的操作并、交、差等,即STL提供的如交集set_inter原创 2015-10-21 21:56:31 · 2834 阅读 · 0 评论 -
stl的sort和手写快排的运行效率哪个比较高?
STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。每种STL实现使用的算法各有不同,GNU Standard C++ Library的实现就原创 2015-10-21 21:14:39 · 4783 阅读 · 0 评论 -
为什么构造函数不能为虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那原创 2015-09-16 08:23:58 · 1305 阅读 · 2 评论 -
浅析函数调用栈
1. 预备知识:函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回结果,还有大家比较熟悉的一句话,就是函数调用是在栈上发生的,那么在计算机内部到底是如何实现的呢? 对于程序,编译器会对其分配一段内存,在逻辑上可以分为代码段,数据段,堆,栈代码段:保存程序文本,指令指针EIP就是指向代码段,可读可执行不可写数据段:保存初始化的全局变量和静态变量,可读原创 2015-07-25 15:47:30 · 2063 阅读 · 3 评论 -
C++ RTTI介绍
一、定义:RTTI:Run Time Type Identification ,运行时类型识别:指程序能够使用基类的指针或引用来检索其所指对象的实际派生类型。二、使用方式:C++中有两个操作符提供RTTI:(1)typeid 操作符:返回指针或引用所指对象的实际类型。(2)dynamic_cast 操作符:将基类类型的指针或引用安全地转换为派生类型的指针和引用。 注:此二操作符只为带有一个原创 2015-07-24 12:34:16 · 1823 阅读 · 0 评论 -
C代码中如何调用C++ C++中如何调用C
1. 在C++中调用C:使用extern "C"则是告诉编译器依照C的方式来编译封装接口,当然接口函数里面的C++语法还是按C++方式编译。包装(wrapper)2. 在C中调用C++:extern "C" 的作用是:让C++连接器找调用函数的符号时采用C的方式注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。集成开发环境如VC++6.0或者vs都是以文件后缀原创 2015-08-26 20:37:21 · 1254 阅读 · 0 评论 -
C++复制构造函数和赋值符的区别
C++复制构造函数和赋值符的区别:http://blog.youkuaiyun.com/randyjiawenjie/article/details/6666937拷贝构造函数和赋值符函数:http://www.cnblogs.com/dwdxdy/archive/2012/07/17/2594993.html!!!!以上这两篇文章讲的比较好,值得细细的去看。原创 2015-06-14 20:42:23 · 1057 阅读 · 0 评论 -
CreateEvent和SetEvent及WaitForSingleObject的用法
CreateEvent:1、函数功能: 创建一个命名或匿名的事件对象 2、函数原型: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // pointer to security attributes BOOL bMa原创 2014-10-15 11:43:33 · 4061 阅读 · 0 评论 -
VS2010 快捷键
Alt + 右方向键 完成单词原创 2014-10-04 15:07:19 · 810 阅读 · 0 评论 -
pragma message
pragma message是用来告诉程序员,程序在编译时期的信息。而outputdebugstr则是告诉程序员,程序在运行时期的信息。下面就以一个例子来讲解pragma message。 配合#if/#ifdef/#ifndef设置编译时的提示信息,例如: //test.cpp #define UNICODE #ifdef UNICODE #pra原创 2014-10-14 22:42:34 · 1160 阅读 · 0 评论 -
C++ STL编程轻松入门
参考:《C++ STL编程轻松入门》http://tech.163.com/05/0613/10/1M4EA0US00091589.html该文章讲得不错,生动形象并不乏乐趣,三个版本的程序附有层次感,让人倍感程序设计的微妙之美。原创 2014-07-14 14:01:55 · 1177 阅读 · 0 评论 -
C/C++ 中的assert()宏 断言机制
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。 原型定义:#include void assert( int expression_r转载 2014-07-14 14:39:37 · 1940 阅读 · 0 评论 -
类模板中.h和.cpp的实现方法
在使用类模板技术时,可在.h中实现,也可在.h和.cpp中分开实现,若用.h实现,不要在文件中加入非类模板代码,可避免重写定义错误.. 2009年7月25日23时58分58秒////////////////////////////////////////////////////////////////////////////////////////////////////////转载 2014-07-10 19:09:42 · 1611 阅读 · 0 评论 -
Win32应用程序开发:完整的开发流程
上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接口中的方法类似,即只定义,不实现。好处就是多态,发何处理,由派生类来决定。在开始吹牛之前,我转载 2014-07-09 21:10:03 · 4314 阅读 · 0 评论 -
exit(0)与exit(1)、return区别
exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在主函数中,则会退出函数并返回一值。详细说: 1. return返回函数值,是关键字; exit 是一个函数。 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 3. retur原创 2014-07-26 12:18:32 · 4537 阅读 · 0 评论 -
渐变颜色填充
GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。[cpp] view plaincopyprint?BOOL GradientFill( _In_ HDC hdc, _In_ PTRIVERTEX pVertex, _转载 2014-07-24 21:43:16 · 1948 阅读 · 0 评论 -
InitializeCriticalSectionAndSpinCount
The InitializeCriticalSectionAndSpinCount function initializes a critical section object and sets the spin count for the critical section.BOOL InitializeCriticalSectionAndSpinCount( LPCRITICAL_转载 2014-07-25 14:22:59 · 1037 阅读 · 0 评论 -
最初的window
不知你是否也是一个常年在MFC下编程的程序员,有的时候是否忘记了在MFC之前是如何写画窗口的了呢,或者你从来都只是机械的在MFC下面写代码,已经麻木了。其实有一个很简单的方法,或许能够帮你更清楚的了解WINDOW是怎么产生的。随便用什么版本的VS,在创建win32工程的时候,直接创建WINDOW类型的就OK了。然后,来研究下产生的源代码吧。// Global Variables:转载 2014-07-24 21:35:06 · 789 阅读 · 0 评论 -
C语言/C++中如何产生随机数 详细出处参考:http://www.jb51.net/article/42065.htm
这里要用到的是rand()函数, srand()函数,和time()函数。需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数。需要说明的是,iostream头文件中就有srand函数的定义转载 2014-05-18 19:35:26 · 1067 阅读 · 0 评论 -
计算C++程序运行时间总结
C++程序运行时间作为一个高效的.NET程序语言。其混合了函数语言和物件导向程序编制语言,并且完美的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。AD:我现在用C++语言写了一段程序,想计算这段程序运行的准确时间,这是要用于跟其它实验结果作对比的,所以要精确到毫秒,C++程序运行时间 确实很难掌握啊!程序运行时间中转载 2014-05-18 18:54:46 · 2256 阅读 · 0 评论 -
system()函数
windows下system () 函数详解 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); system函数已经被收录在标准c库中,可以直接调用 程序例: #inclu原创 2014-09-12 21:30:01 · 1155 阅读 · 1 评论 -
典型的c++模板
/***********************************************文件名:test.cpp*作者:*联系方式:*功能说明:*上次修改:**********************************************/#includeint main(void){ using namespace std; system("color F0"); cout.s原创 2014-10-07 19:17:03 · 726 阅读 · 0 评论 -
CreateThread函数
当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 3分配context结构 4分配两页的物理存储以准备栈,保护页设置为PAGE_REA原创 2014-10-15 13:33:19 · 1810 阅读 · 0 评论 -
c++实现精确计时
//获取比较准确是程序运行时间#include#includeusing namespace std;int main(void){ system("color F0"); cout.setf(ios::fixed); cout.setf(ios::showpoi原创 2014-11-15 15:38:49 · 1918 阅读 · 0 评论 -
一个Sqrt函数引发的血案
我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢?虽然有可能你平时没有想过这个问题,不过正所谓是“临阵磨枪,不快也光”,你“眉头一皱,计上心来”,这个不是太简单了嘛,用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间原创 2014-11-15 17:11:57 · 4446 阅读 · 2 评论