
C++
文章平均质量分 60
mxdxm8899
这个作者很懒,什么都没留下…
展开
-
C++中的各种文件
RC:资源定义文件。.RC2:资源定义文件,供一些特殊情况下使用。其它后缀:.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。.BMP:位图资源文件。.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口...2009-09-17 20:06:21 · 256 阅读 · 0 评论 -
制作dll
许多单讲C++的书其实都过于学院派,对于真实的工作环境,上百个源文件怎么结合起来,几乎没有提及。 一个最简单的C++程序,只需要一个源文件,这个源文件包含了如下语句 int main(){return 0;} 自然,这个程序什么也不做。 当需程序需要做事情时,我们会把越来越多的语句添加到源文件中,例如,我们会开始在main函数中添加代码: #include int mai...原创 2009-09-17 20:11:43 · 93 阅读 · 0 评论 -
lib,dll区别
目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。 静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静...原创 2009-09-17 20:16:30 · 233 阅读 · 0 评论 -
C++私有继承和保护继承
private继承的话,原来父类的public ,protected成员继承到子类中,并成为private类型成员; protected继承的话,原来父类的public ,protected成员继承到子类中,并成为protected类型成员; public继承的话,原来父类的public ,protected成员继承到子类中,类型不变 本文目录如何表达“私有继承” “私有继...原创 2009-10-12 16:52:26 · 92 阅读 · 0 评论 -
虚继承入门
这次失业之后,突然发现现在工作好像真的不是很好找,没办法,主动权不在自己手里,静下心来想想就当通过笔试来给自己查漏补缺吧,昨天笔试遇到一个虚拟继承的概念,这不虽说2分的题,但是这个玩意有大内容,我学习了下,也就先整个入门出来吧: 为什么要引入虚拟继承?虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重...原创 2009-10-12 20:21:48 · 102 阅读 · 0 评论 -
虚继承和虚基类
[size=medium]虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和应用等多个方面对虚继承和虚基类进行...原创 2009-10-12 21:06:52 · 101 阅读 · 0 评论 -
抽象类与接口
什么是接口?接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。但是注意:C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。什么是抽象类?抽象类提供多个...原创 2009-10-28 10:33:35 · 168 阅读 · 0 评论 -
虚函数和虚基类
在进行下面的说明之前,先说一下什么是类型兼容规则:类型的兼容规则是指在需要基类对象的任何地方,都可以用公有派生类的对象来替代。这样公有派生类实际就具备了基类的所有功能,凡是基类能够解决的问题,公有派生类都可以解决,类型兼容规则中所指的替代包括以下的情况: 。派生类的对象可以赋值给基类的对象 。派生类的对象可以初始化基类的引用 ...2009-10-28 10:47:27 · 203 阅读 · 0 评论 -
学习虚函数和重载
数据封装和继承性共同构成了面向对象程序设计的三个重要机制。 1.静态联编与动态联编 由于函数重载的存在,当程序中出现调用同名函数时,编译器会根据函数的参数类型、个数决定调用执行哪一个同名函数的代码,这种把一个函数的调用与适当的函数实现代码联系在一起的过程,叫做联编。根据联编的实现阶段的不同,可将其分为静态联编和动态联编两种。 静态联编是在程序编译阶段确定一个...原创 2009-10-28 11:05:40 · 109 阅读 · 0 评论 -
关于struct结构中字节对齐的问题
什么是对齐,以及为什么要对齐:现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取...原创 2009-11-05 09:13:41 · 101 阅读 · 0 评论 -
C++ sizeof 使用规则及陷阱分析
摘要:鉴于sizeof为各大软件公司笔试、面试必考题,现收集sizeof的各种用法,尽量做到全面理解,其中例子希望能举一反三。提示:下文例子都经过Visual C++ 6.0验证,平台为win32 Windows. 如在其他平台或编译器上运行有不同结果,请自行查看原因。欢迎转载,转载请注明出处,谢谢.目录一、什么是sizeof二、sizeof用法三、基本数据类型的s...原创 2009-11-05 09:49:51 · 92 阅读 · 0 评论 -
堆和栈的区别
什么是堆栈 在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点: 堆:顺序随意 栈:后进先出(Last-In/First-Out)堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编...原创 2009-11-05 10:55:34 · 84 阅读 · 0 评论 -
C++中的预编译指令
C++预处理指令#include#define#undef#pragma#import#error#line#ifdef#ifndef#if#else#elif#endif 宏以#起始 不以;结束 一. #include 文件包含预编译期发现...原创 2009-11-05 11:05:52 · 85 阅读 · 0 评论 -
C++ 编译器的函数名修饰规则
C++ 编译器的函数名修饰规则函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指...原创 2009-11-05 11:23:38 · 99 阅读 · 0 评论 -
C++ 调用约定
__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、_cdecl是C和C++程序的缺省调用方式。每一个...原创 2009-11-05 11:27:35 · 89 阅读 · 0 评论 -
#if #ifdef和#ifndef 三者之间的区别
条件编译 预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。 条件编译有三种形式,下面分别介绍:1. 第一种形式: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空...原创 2009-11-05 11:30:14 · 901 阅读 · 0 评论 -
MFC类说明
①CObject类:CObject是MFC的根类,绝大多数MFC类是其派生的,CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。CObject定义了一个CRuntimeClass类型的静态成员变量:CRuntimeClass classCObject,还定义了几组函数:构造函数析构函数类,诊断函数,与运行时类信息相关的函数,与串行化相关的函数。其中...原创 2009-11-05 11:44:35 · 132 阅读 · 0 评论 -
IT公司笔试算法题
1、将一整数逆序后放入一数组中(要求递归实现)void convert(int *result, int n) { if(n>=10) convert(result+1, n/10); *result = n%10; }int main(int argc, char* argv[]) { int n = 123456789, result[20]={}; conv...原创 2009-11-08 09:55:02 · 84 阅读 · 0 评论 -
VC6.0的十八个技巧
1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。2.查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的...原创 2009-11-08 10:13:37 · 122 阅读 · 0 评论 -
'std' : does not exist or is not a namespace
今天写了个程序用了如下代码#include using namespace std;然后编译时出现 error C2871: 'std' : does not exist or is not a namespace查了一下,原来 C++有两个不同版本的头文件。引入名字空间这个概念以前编译器用的是#include ,而引入名字空间的概念以后std名字空间的头文件名字变成了...原创 2009-11-08 16:06:54 · 648 阅读 · 0 评论 -
GameLoft面试题目
1、 求下列代码执行以后expr的值a) int a = 8,b = 4;int expr = a++%++b*2答案:6注意:++运算符在变量前后的区别b) int expr = 20 / 8 * 8;答案:16注意:整数和整数运算结果还是整数c) int expr = 4 ...原创 2009-11-09 23:04:33 · 181 阅读 · 0 评论 -
C++运算符的优先级列表
C++ 运算符优先级列表 c语言的操作符共有15个优先级,如下: Operators Associativity () [] -> . left to right ! ~ ++ -- + - * (type) sizeof right to left * / % left to right + - left to right > lef...原创 2009-11-09 23:26:46 · 123 阅读 · 0 评论 -
异或运算符^
按位异或运算符^ 逻辑运算均是按位进行操作,真值表如下:AND (位与&) OR ( 位或| ) XOR ( 位异或^ ) 1 & 1 = 11 & 0 = 00 & 1 = 00 & 0 = 0 1 | 1 = 11 | 0 = 10 | 1 = 10 | 0 = 0 1 ^ 1 = 01 ^ 0 = 1...2009-11-09 23:40:41 · 131 阅读 · 0 评论 -
C语言中文件的打开方式
r:打开一个文本文件只读w:打开一个文本文件只写a:对一个文本文件添加rb:打开一个二进制文件只读wb:打开一个二进制文件只写ab:对一个二进制文件添加r+:打开一个文本文件读/写w+:生成一个文本文件读/写a+:打开一个文本文件读/写rb+:打开二进制文件读/写wb+:生成二进制文件读/写ab+:打开二进制文件读/写如果用写方式打开一个文件,则...原创 2009-11-10 10:30:14 · 447 阅读 · 0 评论 -
数组中去掉重复的数字
题目: 有一个数组t[100],存放了1~99之间的数字,用效率较高的代码把重复数字去掉。例如数组{1,2,2,2,3,5,6,6}变成{1,2,3,5,6}。××××××××××××××××××××××××××××××××××申请标志数组此题重复的数字可能不只一个,上述求和的方法不行了。因为是高效率,我们可以采用空间换时间的策略来解决。设立访问标志数字,初...原创 2009-11-10 12:17:22 · 210 阅读 · 0 评论 -
找出数组中重复的数
题目是这样的, 数组是无序的, 可能没有重复的数,但最多只可能有一个重复的数,要求用最快的方法找到是否有重复的数。乍一想,挺难的,但是其实非常的简单。解决办法: 数组a[N],1至N-1这N-1个数存放在a[N]中,其中某个数重复一次。写一个函数,找出被重复的数字。时间复杂度必须为o(N)函数原型:int do_dup(int a[],int N) ...原创 2009-11-10 12:34:56 · 246 阅读 · 0 评论 -
回调函数
简介 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。...原创 2009-11-13 19:18:35 · 83 阅读 · 0 评论 -
C++中的临时对象
程序员间交谈时,经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里:templatevoid swap(T& object1, T& object2){ T temp = object1; object1 = object2; object2 = temp;} 通常把temp叫做临时变量。不过就C++而言,temp根本...原创 2009-11-13 19:42:47 · 110 阅读 · 0 评论 -
rsa加密解密算法
1978年就出现了这种算法,它是第一个既能用于数据加密 也能用于数字签名的算法。它易于理解和操作,也很流行。算 法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和 Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数 ( 大于 100个十进制位)的函数。据猜测,从一个密钥和...原创 2009-11-17 07:13:13 · 168 阅读 · 0 评论 -
基于c语言加密解密算法
这里使用的是按位加密,按ASCII码进行加密的算法自己写个,很容易的。#include#include#include#includevoid dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/void usage(char *name);void main(int argc,cha...原创 2009-11-17 07:22:47 · 531 阅读 · 0 评论 -
简单的STL
STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。要点STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。STL另一个重要特性是它不...2009-11-17 07:44:03 · 116 阅读 · 0 评论 -
C++ STL 中map的一些用法
Map概述Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边...原创 2009-11-17 07:55:38 · 90 阅读 · 0 评论 -
c/c++中结构体(struct)知识点强化,链表的学习
结构体可以看做是一种自定义的数据类型,它还有一个很重要的特性,就是结构体可以相互嵌套使用,但也是有条件的,结构体可以包含结构体指针,但绝对不能在结构体中包含结构体变量。 struct test { char name[10]; float socre; test *next; };//这样是正确的! struct test { char name[1...原创 2009-11-17 08:28:23 · 82 阅读 · 0 评论 -
c++中的字符串函数
#include void *memchr( const void *buffer, int ch, size_t count );功能:函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。int memcmp( const void *buffer1,...原创 2009-11-17 08:32:35 · 149 阅读 · 0 评论 -
一道百度面试题
[size=medium]A厂有1万个工人,编号0-9999,( EE[10000] ), 1个厂长( GG )分派任务, 1个监工( MM )管理工人. 厂子忙的时间不确定,可能突然很忙,1天接到任务5000多个,1个任务只能分配给1个工人做, 也可能好几十天没新任务. 厂长分配任务给这1万个工人干,按工人编号一个一个来,到最后一个工人就又从头开始,任务完成时间各不相同, 可...原创 2009-11-19 07:44:03 · 295 阅读 · 0 评论 -
将任意整数N分解成多个互不相同的正整数的和,并打印所有可能的组合方式。...
#include int d[1000],num; long number; void divide(int k,int n) { int i,j; for(i=d[k-1]+1;i*2d[k]*2) divide(k+1,n-i); d[k+1]=n-i; number++; cout原创 2009-11-21 20:40:19 · 1078 阅读 · 0 评论 -
C、C++中的日期和时间 time_t与struct tm转换
一.概念Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译...原创 2009-11-21 20:42:53 · 158 阅读 · 0 评论 -
MFC为何使用消息映射表而不用虚函数?
这个问题是windows开发面试中最经常问到得问题,也是很有深度的一个问题。有两个帖子对该问题讨论的比较深刻:http://topic.youkuaiyun.com/u/20090822/16/4cf5d189-0e5e-41ff-9ba3-c7eaf2f6da74.htmlhttp://topic.youkuaiyun.com/u/20090316/22/8b067591-6a17-4970-b224-41...原创 2009-12-02 09:40:22 · 93 阅读 · 0 评论 -
strcpy、wcscpy与_tcscpy
[size=large]C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:char *strcpy(char *strDestination, const char *strSource); wchar_t *wcscpy(wchar_t *strDestination, const wchar_t *strSource); wcscpy()即为...原创 2009-12-11 09:51:09 · 139 阅读 · 0 评论 -
TCHAR、_T与_TEXT
计算机最初使用的不是UNICODE,最初的系统和程序都采用的是ANSI或者MBCS,那么,问题来了:我们开发程序的时候,是采用char还是wchar_t?观察如下代码:char msg[] = "学习C++"; 当我们准备采用wchar_t时,则需要改成:wchar_t msg[] = L"学习C++"; 太麻烦了!幸运的是,Visual C++的开发者预知到了这样的麻烦,...原创 2009-12-11 10:02:11 · 96 阅读 · 0 评论