纵横C++
文章平均质量分 66
程序心声
代码就是情人
你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生。
傲行人生路
平凡而简单的人一个,无权无势也无牵无挂。一路厮杀,只进不退,死而后已,岂不爽哉!
收起对“车”日行千里的羡慕;收起对“马”左右逢缘的感叹;目标记在心里面,向前进。一次一步,一步一脚印,跬步千里。
这个角色用于劝勉现在的我。
展开
-
怎样计算C++下继承、虚继承、虚函数类的大小
一、真空类C++代码class CNull { }; 长度:1 内存结构: ?? 评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。 二、空类C++代码class CNull2 { public: CNull2(){printf("Construct/n");} ~CNull2(){p...转载 2018-11-25 00:38:09 · 675 阅读 · 0 评论 -
Hello World程序背后的故事解密(一)—— 编译器的选项和C运行时库
作为一个程序员,想必大家都会对HelloWorld这个程序是深有感触吧。是的,就是这个程序第一次带我们进入了神奇的计算机编程的世界,指引我们开始走上了程序员这条充满了艰辛和快乐的路。HelloWorld对我们这群程序员来讲意义是非比寻常的,因此我想更加深入的研究一下C语言版的HelloWorld程序,撕开它的外衣,将隐藏在简单表象下的运行时秘密拿出来给各位看看。 这个系列文章预计将通过对转载 2016-12-17 13:51:06 · 422 阅读 · 0 评论 -
匈牙利命名法的辩思
本文章来自于【http://blog.csdn.net/fullsail/article/details/8039253】版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]匈牙利命名法的辩思随手打开8月要检视的代码,发现这次两个组的代码风格居然都选择了匈牙利命名法。也就正好借着这个机会谈谈这种命名法。转载 2016-06-22 16:49:54 · 460 阅读 · 0 评论 -
C++ 初始化列表
何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。struct foo{ string name ; int id ; foo转载 2016-03-28 17:54:28 · 276 阅读 · 0 评论 -
什么时候用堆,什么时候用栈?
参考文章:《c++面试题之内存分配》一、首先,回顾一下c、c++的内存分配机制。 一个C、C++程序编译时内存分为5大存储区:堆区、栈区、静态区(全局区)、文字常量区(储存字符串常量)、程序代码区(存放二进制程序)下面主要阐述前面三个。(1)静态存储区域:静态存储区域的内存在程序编译时就已经分配好,这块内存在程序的整个转载 2016-03-28 17:39:20 · 1089 阅读 · 0 评论 -
VC中文件操作的几种方式(3,4)
6.1.3 使用Windows APIWindows API总是显得格外沉重,表6-5是常用的文件读写操作API。表6-5 文件读写API函数含义CreateFile创建、打开文件,返回文件句柄CloseHandle关闭文件句柄ReadFile转载 2015-11-05 21:15:54 · 690 阅读 · 0 评论 -
VC中文件操作的几种方式(1,2)
第6章 使用文件存取对象文件可以用来存储一张《清明上河图》,一曲《春江花月夜》,当然也可以存储一部《红楼梦》,文件的内容依赖于应用程序来解释。几乎所有的操作系统都通过文件的界面允许用户保存、管理数据。所以,我们理所当然把文件当做数据存取介质的第一选择。6.1 文件操作的几种方式操作计算机的人都会接触到文件,文件的操作通常包括文件的读取、修改,有的时候我们还需要对文件进行外部管理,包转载 2015-11-05 21:09:49 · 594 阅读 · 0 评论 -
C/C++字符串查找函数
C/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr在指定内存里定位给定字符strchr在指定字符串里定位给定字符strcspn返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量strrchr在字符串里定位给定字符最后一次出现的位置strpbrk转载 2013-10-11 17:46:54 · 949 阅读 · 0 评论 -
C中Static的用法小结
C中static这个关键字的用法比较灵活,下面就static的主要用法予以总结,有不对之处,还望高手指出。 这里主要从两个角度来考虑static的用法:对变量(全局和局部)的影响,对函数的影响。 一、对变量的影响(即静态变量)1、存储位置:静态存储区2、生存期:程序运行整个期间,特别对局部静态变量,函数退出后,变量依然存在3、可访问转载 2013-10-11 18:36:02 · 609 阅读 · 0 评论 -
C/C++ strtok函数
一、头文件:#include 二、函数原型:char * strtok (char *str, const char * delimiters);三、参数:str,待分割的c风格的字符串(c-string);delimiters,分割符字符串。四、说明:将字符串str分解成若干个单词,单词之间以delimi转载 2013-10-11 18:27:29 · 944 阅读 · 0 评论 -
PE文件格式系列(一)——探究PE文件常见Section作用
最近由于各种原因想要研究一下PE文件,要彻底研究PE和COFF文件格式当然是非研究微软自己的技术白皮书——《Microsoft Portable Executable and Common Object File Format Specification》不可了。于是花了一点时间看看,有些心得,和大家分享一下。 首先本文不是讨论PE文件格式本身的,这属于技术规范的范畴,大家要是感兴趣可以转载 2016-12-17 13:53:43 · 940 阅读 · 0 评论 -
关于Visual C++增量链接以及.textbss
好的,文接上回,本文我就来讲讲微软link.exe连接器的Incremental Liking这个特性。当然这个其实不是微软linker独有的特性,很多链接器都有这个特性,这个特性实际上是为了提高链接速度的。 想象一下这个场景,我写了两个函数foo()和bar(),其中foo()在0x400100处而bar()紧接着保存在0x400200处。现在我将foo()改写了一下,添加了一些per转载 2016-12-17 13:55:55 · 518 阅读 · 0 评论 -
CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char解析
一.类型简介1.CString:动态的TCHAR数组。它是一个完全独立的类,封装了“+”等操作符和字符串操作方法,换句话说就是CString是对TCHAR操作的方法的集合。2.LPCTSTR:常量的TCHAR指针,其定义为?1typedef const TCHAR*LPCTSTR转载 2013-03-27 16:19:13 · 877 阅读 · 0 评论 -
C++ fstream流的eof()函数多读一行的问题
最近帮老师带C++的课程设计,很多同学在使用很多fstream流的eof()函数进行 while(!readfile.eof()) { readfile>>x; }时,会出现将最后一行数据读两次。eof是end of file的意思,用来判断是否到了文件结尾。微软的文档说明如下:bool eof(转载 2017-03-10 01:54:30 · 5524 阅读 · 0 评论 -
构造函数初始化表的使用规则
版权声明:本文为博主原创文章,未经博主允许不得转载。(1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。class A{public: A(int x);};class B : public A{public: B(int x, int y);};//如果A没有默认构造函数,必须在初始化表里调用A的构造函数.转载 2017-02-17 00:27:49 · 324 阅读 · 0 评论 -
析构函数声明为私有的作用
版权声明:本文为博主原创文章,未经博主允许不得转载。当我们规定类只能在堆上分配内存时,就可以将析构函数声明为私有的。class alloc{public: alloc():private: ~alloc();}; 如果在栈上分配空间,类在离开作用域时会调用析构函数释放空间,此时无法调用私有的析构函数。如果在堆上分配空间,只有在delet转载 2017-02-16 23:49:23 · 400 阅读 · 0 评论 -
Effective C++总结
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]条款01:视C++为一个语言联邦(View C++ as a federation of languages.) C++主要的四个次语言: (1)C。说到底C++仍是以C为基础;(2)Object-Oriented C++。这部分也就是C with C转载 2017-02-16 23:36:22 · 1094 阅读 · 0 评论 -
C++中将构造函数或析构函数定义为private
版权声明:本文为博主原创文章,未经博主允许不得转载。 今天面试被问到了这个单例模式常用到的技术手段,下面进行分析: 很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么?转载 2017-02-16 23:23:22 · 379 阅读 · 0 评论 -
动态分配内存的原理
FAQ 2.07 C++允许用new指针动态分配内存,动态分配也就是从堆分配。下面显示了用语法new Car()从堆分配Car对象。结果被存在一个CarPtr指针中,CarPtr是一个auto_ptr的别名,这是一种"安全指针类型"。typedef语法建立了相对应的别名。#include #incl转载 2017-02-16 22:57:18 · 509 阅读 · 0 评论 -
关于Condition Variable为什么需要一个Mutex的思考
我们都知道如何使用一个condition variable:1、Linux下:1 pthread_mutex_lock(&mutex);2 pthread_cond_wait(&cond, &mutex);3 doSomething();4 pthread_mutex_unlock(&mutex);2、java里:1 synchronized(this){转载 2016-12-17 13:58:32 · 1447 阅读 · 0 评论 -
Hello World程序背后的故事解密(二)——程序之生
近几个月实在是太忙了,偶然想起来博客上一看,离上次写文章居然过了两个月有余,于是手痒痒想加把劲,再码点儿技术文上来^_^这个系列是为了挖掘出一个简单的类似Hello World程序隐藏在CRT之下的复杂性,因此在上次分析了“编译器选项和CRT”之后,今天我想再来简单分析一下从程序进程建立直到程序运行到C/C++入口函数处发生的那点儿事儿。我们知道,在Windows下一个进程是使用Creat转载 2016-12-17 13:57:26 · 286 阅读 · 0 评论 -
C/C++ Const之我见
C/C++中const的用法太过于灵活,以至于误用。关于const的用法,网友已经写了很多相关文章,不过我觉得都是在罗列const的一些表面用法,没有阐述const的本质,看过了,也很容易忘记。因此,结合我对const的一些理解,就有了下面的文字,有不对之处,还望高手指点。一、const的本质const表示了不可改变的属性。二、const的用法分析转载 2013-10-11 18:18:23 · 646 阅读 · 0 评论 -
C/C++ I/O库函数
头文件:stdio.h函数列表: 文件操作remove删除文件rename重命名文件tmpfile打开一个临时文件tmpnam产生临时文件名 文件访问fclose关闭文件fflush转载 2013-10-11 19:00:25 · 825 阅读 · 0 评论 -
C/C++时间处理函数
C time库中提供了几个时间处理的函数:获取时间clock获取程序从开始到调用clock硬件滴答数difftime获取两个时间的差time获取当前时间转换时间mktime将tm结构转换成time_tasctime将tm结构转换成stringctime转载 2013-10-11 18:41:13 · 840 阅读 · 0 评论 -
C++ 获取系统时间并且转换成字符串
很多时候为了批量命名文件的方便我们都会选用系统时间作为文件名,下面是使用C++获取系统时间并且将其转换为字符串的代码,极其菜鸟仅供日后查阅方便:int CALLBACK CMainFrame::SnapCallback(HV_SNAP_INFO *pInfo){ CMainFrame *pFrame = (CMainFrame *)(pInfo->pParam);转载 2013-04-09 19:33:13 · 3379 阅读 · 0 评论 -
获取系统当前时间之方法大集合
//* 方法一 time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t= localtime(&tt); printf("%d-%02d-%02d %02d:%02d:%02d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min转载 2013-04-09 19:15:52 · 1201 阅读 · 0 评论 -
C语言宏定义使用技巧
该文系网络搜集: C语言宏定义使用技巧写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H //头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译转载 2013-03-07 16:29:33 · 626 阅读 · 0 评论 -
C语言常用宏定义技巧
C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H //头文件内容#endif2,重新定义一些类型,防止由于各种平台和转载 2013-03-07 16:01:20 · 514 阅读 · 0 评论 -
Linux编程C++内存管理之内存分配详解
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创转载 2012-12-28 12:27:27 · 443 阅读 · 0 评论 -
VC中通过查询注册表判断是否为无线网卡
通过GetAdaptersInfo可以查询网卡的一些相关的信息,但是通过测试,发现并不能通过 pAdapter->Type 来判断是否无线网卡。 设备的一些信息存储在注册表里,可以通过查询注册表,得到设备的一些信息。 关键:查询,HKEY_LOCAL_MACHINE//System//CurrentControlSet//Control//Network//{4D36E972-E3转载 2012-12-28 14:03:07 · 962 阅读 · 0 评论 -
VC 获取物理网卡的MAC地址
获取网卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等。经过测试发现 Netbios 方法在网线拔出的情况下获取不到MAC,而 SNMP 方法有时会获取多个重复的网卡的MAC,试来试去还是 GetAdaptersInfo 方法比较好,网线拔出的情况下可以获取MAC,而且很准确,不会重复获取网卡。 GetAdaptersInfo 方法也不是十全十美,也存转载 2012-12-28 13:52:10 · 672 阅读 · 0 评论 -
【珍藏】C/C++热门精品资料地址集(110个)
网上C/C++资料很多,但是良莠不齐,在这里我们收集了一批热门的,好评率都很不错的资料,按照下载量和好评率排序,制作了一个地址集分享给广大C/C++学习者,方便大家收藏以备后用,需要时选择性下载。希望大家喜欢!. R7 Q: [9 [3 ]) c! x# D8 Y8 `+ Q" F2 C/ l4 H5 U) r+ p$ R4 ]目录完整版 0积分下载:4 Q' R. H6 K7 fht转载 2012-12-28 12:20:22 · 2588 阅读 · 0 评论 -
VC中通过查询注册表判断是否无线网卡
设备的一些信息存储在注册表里,可以通过查询注册表,得到设备的一些信息。关键:查询,HKEY_LOCAL_MACHINE//System//CurrentControlSet//Control//Network//{4D36E972-E325-11CE-BFC1-08002BE10318}下的MediaSubType的值来进行判断,为1则是PCI网卡,为2则是无线网卡。用到的函数:无非就是一转载 2012-12-28 14:07:44 · 1463 阅读 · 0 评论 -
C++如何获取当前时间并转换成相应的格式字符串
wchar_t* pNewFolder = new wchar_t[30]; __time64_t long_time; struct tm newtime;_time64( &long_time ); errno_t err;err = _localtime64_s( &newtime, &long_time ); if (err){ W转载 2013-04-09 19:36:45 · 1297 阅读 · 0 评论 -
VC++中几种数据类型(CString, char*, char, ******等)之间的相互转换
C++代码 #include using namespace std; void main() { CString strCString="ABC"; char strchar[256],*pstr; pstr=(LPSTR)(LPCTSTR转载 2013-03-27 14:51:39 · 2276 阅读 · 0 评论 -
C++类访问控制及继承
一、C++类的访问控制有三类:public,protected和private。类访问控制符类成员可被哪些对象访问public1、类的成员函数。2、类对象。3、友元。4、子类成员函数protected1、类的成员函数。2、友元。3、子类成员函数private1、类的成员函数。2、友元转载 2013-10-11 18:34:11 · 799 阅读 · 0 评论 -
C/C++字符串函数之复制函数
突然发现对字符串函数缺乏系统的了解,所以花了一点时间专门整理下,在此记录之,以方便自己及有需要的人使用。C/C++字符串函数的头文件:string.h复制函数主要有4个,如下:1、char * strcpy(char* destination,const char * source);2、char* strncpy(char* destination,const c转载 2013-10-11 18:30:34 · 1135 阅读 · 0 评论 -
C/C++字符串转换到数字的函数
C/C++标准库stdlib.h中提供了字符串到数字的转换。一、头文件[cpp] view plaincopy#include 二、函数列表[cpp] view plaincopyint atoi ( const char * str ); long转载 2013-10-11 18:23:56 · 976 阅读 · 0 评论 -
C及所派生的众语言和平台关于文件操作之系统介绍
CBuilder的文件操作(1) 在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是:1、基于C的文件操作;2、基于C++的文件操作;3、基于WINAPI的文件操作;4、基于BCB库的文件操作;5、特殊文件的操作。这次我首先写出第一篇,以后我会陆续写出其它部分在我主页中发表。壹转载 2013-03-26 17:35:38 · 963 阅读 · 0 评论 -
判断文件结束有两种方法:EOF和feof()
判断文件结束有两种方法:EOF和feof() 查看stdio.h可以看到如下定义:[cpp] view plaincopyprint?#define EOF (-1) #define _IOEOF 0x0010 #define feof(_stream) ((_stream)->_flag & _IOEO转载 2013-03-26 01:52:59 · 1438 阅读 · 0 评论