![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 79
雪岢奇
在职员工
展开
-
C++ 运算符优先级列表
PrecedenceOperatorDescriptionExampleAssociativity1()<br />[]<br />-><br />.<br />::<br />++<br />--Grouping operator<br />Array access<br />Member access from a pointer<br />Member access from an object<br />Scoping operator<br />Post-increment<br />Post-d原创 2010-09-20 18:32:00 · 435 阅读 · 0 评论 -
Visual C++ MFC 简明教程
<br /><br />原著:Marshall Brain 编译:张圣华<br /> <br />第一部分:MFC导论<br /> Visual C++ 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的 C++ 来开发出专业级的 Windows 应用程序。为了能充分利用这些特性,你必须理解 C++ 程序设计语言。掌握了C++,你就必须掌握 Microsoft 基本类库 (MFC) 的层次结构。该层次 结构包容了 Windows API 中的用户界面部分,并使你能够很容转载 2010-10-03 10:49:00 · 7514 阅读 · 5 评论 -
三阶幻方(用最原始的方法产生)
<br />#include <iostream>#include <iomanip>using namespace std;//计算3阶幻方int main(){ int a[4][4]; int n=4; int row; int k; for(int d1=1;d1<=9;d1++)//the first number for(int d2=1;d2<=9;d2++)//the second number { if(d2==d1)原创 2010-10-19 14:57:00 · 2397 阅读 · 0 评论 -
优先搜索算法
<br />使用计算机求解的问题中,有许多问题是无法用数学公式进行计算推导采用模拟方法来找出答案的。这样的问题往往需要我们根据问题所给定的一些条件,在问题的所有可能解中用某种方式找出问题的解来,这就是所谓的搜索法或搜索技术。<br />通常用搜索技术解决的问题可以分成两类:一类问题是给定初始结点,要求找出符合约束条件的目标结点;另一类问题是给出初始结点和目标结点,找出一条从初始结点到达目标结点的路径。<br />常见的搜索算法有枚举法、广度优先搜索法、深度优先搜索法、双向广度优先搜索法,A*算法、回溯法、分转载 2010-12-09 21:37:00 · 2020 阅读 · 0 评论 -
按钮加载位图的几个方法 vc
一,只加载一张位图的方法:1,装入bmp资源,id为IDB_BMP,按钮的bitmap属性设为true,icon属性为false。 2,CButton *pBtn = (CButton *)GetDlgItem(IDB_BMP)转载 2011-07-03 20:09:09 · 1384 阅读 · 0 评论 -
c++继承中的内存布局
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细转载 2011-09-03 21:49:37 · 569 阅读 · 0 评论 -
delete指针之后应该赋值NULL
首先,C++标准规定:delete空指针是合法的,没有副作用。但是,delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址。 问题来了,对一个非空指针delete后,若没有赋NULL,若再次delete的原创 2011-08-27 15:36:41 · 5758 阅读 · 1 评论 -
函数的返回值问题(返回指针和数组的区别)静态存储区、动态数据区、栈
char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改转载 2011-09-02 16:27:29 · 1010 阅读 · 0 评论 -
关于C++中的接口的问题
最近经常听到对于C++中的接口问题,我想C++只是没有为接口直接提供关键字而已。但是不表示你不可以自己定义接口。另一方面你也可以把纯抽象类看成是接口。总的来说呢,接口是一个没有被实现的特殊的类,它是一系列操作的集合,我们可以把它看作是与其他对象通讯的协议。C++中没有提供类似in原创 2011-09-07 22:38:07 · 730 阅读 · 0 评论 -
在VC++实现数据加密
下载本文示例源代码为了保证数据的安全性与完整性,常常要对数据进行加密,在数据传输过程进行数据加密可以防止中途非法截获。我们通常称原始数据叫做源文,用约定的加密算法进行加密处理。加密算法的输入是源文与加密键,而输出的则是密文。加密算法可以分为两种,一种是密键加密算法,一种是转载 2011-09-06 23:36:13 · 4410 阅读 · 0 评论 -
C/C++ 中的移位操作总结
最近学习过程中发现数据的移位操作很是重要,因此便需要总结一番。1、什么样的数据类型可以直接移位char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以进行移位操作,而dou原创 2011-09-10 08:58:25 · 5046 阅读 · 0 评论 -
检索文件 (未完善 待续!)
bool CTest_Thread1Dlg::Search(){ CString str; char *szFilename; GetDlgItemText(IDC_FIND,str); //szFilename=str.GetBuffer(szFilenam原创 2011-09-16 17:40:27 · 631 阅读 · 0 评论 -
可变参数 函数(可变参数列表--1)
1.什么是可变长度参数我们在C语言编程中有时会遇到一些参数个数可变的函数,即函数的入参个数和类型是不确定的,例如printf()函数,其函数原型为:int printf(char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类原创 2011-09-15 23:45:06 · 818 阅读 · 0 评论 -
(深入探讨线程设计)以及MsgWaitForMultipleObjects函数的使用要点
使用多线程技术可以显著地提高程序性能,本文就讲讲在程序中如何使用工作线程,以及工作线程与主线程通讯的问题。一 创建线程 使用MFC提供的全局函数AfxBeginThread()即可创建一个工作线程。线程函数的标准形式为 UINT MyFunProc(LPVOI原创 2011-09-21 14:37:07 · 1017 阅读 · 0 评论 -
C/C++ 常见编程技巧
一、const char* 和char* 之间的转换 const char*是指向常量的指针,而不是指针本身为常量,可以不被初始化.该指针可以指向常量也可以指向变量,只是从该指针的角度而言,它所指向的是常量,通过该指针不能修改它所指向的数据. 1.const转载 2011-08-27 14:44:04 · 765 阅读 · 0 评论 -
C++的类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast
在C++中,存在类型转换,通常意味着存在缺陷(并非绝对)。所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换(3)避免使用reinterpret_cast和老式的强制类型转换操作转载 2011-08-27 14:47:29 · 2638 阅读 · 1 评论 -
野指针(深入浅出)
论一什么是野指针? 一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这个在厨房的小孩比较淘气,他在走出厨房时自己将蛋糕吃了,没能带出来。转载 2011-08-27 14:41:59 · 1002 阅读 · 0 评论 -
STL,ATL,WTL之间的联系和区别
一、STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在转载 2011-08-27 14:43:14 · 548 阅读 · 0 评论 -
C++中代理类和句柄类
指针是 C 与其他语言区别的重要特征之一,在 C++ 中,指针也被广泛运用,我们通过指针实现多态。然而,众所周知,指针的使用必须小心,否则很容易造成内存泄漏 Memory Leak。当我们有几个指针指向同一个对象时有其应该注意,关于何时释放这个对象:(1) 如果释放的太早,那转载 2011-08-27 14:45:19 · 748 阅读 · 0 评论 -
详谈 空指针NULL、野指针、通用指针(1)
关于空指针NULL、野指针、通用指针 首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了。假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x10原创 2011-08-27 15:05:21 · 3529 阅读 · 0 评论 -
VC编译选项 MT MTd MD MDd 全面分析
VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库 库文件Single thread(static link) ML l转载 2011-09-25 15:18:39 · 1899 阅读 · 0 评论 -
循环冗余校验码(CRC)应用总结(包括C++源码)
最近在实习期间需要用到数据的校验,所选为CRC16,那么就在此总结一番吧。现在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,原创 2011-09-12 10:40:39 · 18165 阅读 · 2 评论 -
C/C++中的二维指针问题
指针是可变数组的首地址。正因为是可变数组,所以一般使用指针时都是采用动态内存分配和释放的方式。一维指针形式简单,容易理解。平时应用较多。二维数组和二维指针比较复杂,并且在动态内存分配与释放方面比较复杂且难以理解。但是二维数组和二维指针是非常有用的。 考虑以下应用:对一原创 2011-08-27 15:25:18 · 887 阅读 · 0 评论 -
C/C++语言void及void指针深层探索
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void原创 2011-08-27 18:29:36 · 608 阅读 · 0 评论 -
c++面向对象编程必备“良方”(欢迎大家来补充!)
前言:c++面向对象中的繁琐机制,不得不让你在编程中频频“犯病”,找错误,找bug,困扰,是你的病源所在,本人虽不是什么“良医”, 却也算是总结出以下“良方”。注:难免会有记忆上的遗漏,知识上的不够,遗漏之处还需大家来补充啊!http://blog.csdn.net/zhan转载 2011-09-27 08:44:35 · 445 阅读 · 0 评论 -
深度探索C++对象模型2
笔记贴出后,有朋友便给我提出了一个很好的建议,原文如下:史列因:我刚看了你写的“深度探索C++对象模型(1)”,感觉很不错。不过我有一个建议:你说“谁知第一章便如此的难以消化,已经反复读了3遍,还是有些夹生”是很自然的。第一章是一个总览,如果你能全看懂,后面的就没什么看的必要转载 2011-09-28 16:57:10 · 645 阅读 · 0 评论 -
转:临界区,互斥量,信号量,事件的区别
最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、转载 2011-09-29 11:05:56 · 1370 阅读 · 0 评论 -
深度探索C++对象模型1
读完这一章使我想到了一个很久以前看到的一个笑话,编写一个HELLO WORLD的程序,随着水平和职务的不一样,程序代码也随着变化。当初看时完全当作笑话来看,现在看来写此笑话的人水平不一般。如果要使你的代码能够最大限度的适应不同的运行环境,和最大限度的复用,则在设计和编写的过程中需转载 2011-09-28 16:56:24 · 645 阅读 · 0 评论 -
C++ 0X学习 (1)
先说下C++ 0x:C++0x是一个新的C++标准现行的C++标准是C++98,就是98年制定出来的C++0x是计划在200X 制定,后来被定成C++09美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的原创 2011-10-22 18:37:33 · 1317 阅读 · 0 评论 -
进程间通信详解 - 邮槽实现
引子前面的一篇博文介绍了进程之间通信的一种最为简单的方式,也就是在本地进程之间通过剪贴板来实现进程间通信,而剪贴板自有其缺陷,很显然的是,剪贴板只能在本地机器上实现,无法实现本地进程与远程服务器上的进程之间的通信,那么有没有办法实现本地进程和远程进程的通信呢?办法自然是有的,要是实在搞不出,我拿 Socket 来实现本地进程和远程进程的通信来转载 2011-11-13 21:42:09 · 1779 阅读 · 0 评论 -
C++ 向上类型转换、向下类型转换 .
在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类,和基类向子类的强制类型转换。向上强制类型转换切割:覆盖方法和子类数据丢失的现象生成切割(slice)#include using namespace std;class Base{ public: int b; virtual void Test() { cout <转载 2011-11-20 21:46:03 · 781 阅读 · 0 评论 -
C语言面向对象的构造
1. define the structure of virtual function table view plaincopy to clipboardprint?#ifndef __INTERFACE_H__ #define __INTERFACE_H__ //定义一个虚函数表名称 #define VTBL(iname) iname#转载 2011-11-20 22:10:11 · 703 阅读 · 0 评论 -
wave 采集总结
首先需要了解一些基本知识。一、数字音频基础知识Fourier级数:任何周期的波形可以分解成多个正弦波,这些正弦波的频率都是整数倍。级数中其他正线波的频率是基础频率的整数倍。基础频率称为一级谐波。PCM:pulse code modulation,脉冲编码调制,即对波形按照固定周期频率采样。为了保证采样后数据质量,采样频率必须是样本声音最高频率的两倍,这就是Nyquist原创 2011-11-02 14:28:10 · 12188 阅读 · 2 评论 -
进程间通信详解 - 动态链接库实现
引子前面介绍的几种用于实现进程之间通信的方法都是比较正统的方式,像剪贴板,命名管道这些都还是用得比较多的,而这里将介绍的是一种比较偏门的方法来实现进程间的通信,所谓偏门呢,自然就是用的少,能够不用就不要使用。其实这种方法就是通过动态链接库来实现进程间的通信。 动态链接库(DLL)概述转载 2011-11-13 21:44:47 · 4055 阅读 · 3 评论 -
进程间通信详解 - 命名管道实现
引子好,到这里呢,就需要介绍实现进程间通信的第四种方式了,也就是通过命名管道来实现,前面介绍的那三种方式呢,都是有缺陷或者说局限性太强,而这里介绍的命名管道相对来说,在这方面就做得好很多了,比如,剪贴板的话只能实现本机上进程之间的通信,而邮槽的话虽然是可以实现跨网络之间的进程的通信,但麻烦的是邮槽的服务端只能接收数据,邮槽的客户端只能发送数据,太悲剧转载 2011-11-13 21:40:59 · 2739 阅读 · 0 评论 -
进程间通信详解 - 匿名管道实现
引子前面的两篇博文分别介绍了通过剪贴板和通过邮槽来实现进程之间的通信,其中剪贴板呢,是用来实现本地两个进程之间的通信,而邮槽则既可以实现本地两个进程之间的通信,也可以实现本地进程和服务器进程的通信,当然,上面这两种方式都是有局限性的,比如剪贴板就只能实现本地进程之间的通信,而在邮槽中,虽然是既可以实现本地进程之间的通信,又能实现本地进程和远程服务器进程的通信转载 2011-11-13 21:37:29 · 1416 阅读 · 0 评论 -
wave 读写
1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录,原创 2011-12-13 19:24:33 · 3580 阅读 · 0 评论 -
C++多继承中重写不同基类中相同原型的虚函数
在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数。下面就是一个例子:class CBaseA{public: virtual void TestA();};class CBaseB{public: virtual void TestB();};class CDerived : public CBaseA, public CBaseB{public: vir转载 2011-12-29 22:51:54 · 613 阅读 · 0 评论 -
让程序在崩溃时体面的退出之SEH
SEH的全称是Structured Exception Handling,是Windows操作系统提供的一种异常处理方式。SEH是属于操作系统的特性,不为特定语言设计,从它的名字就能看出它是一种结构化的异常处理方式。SEH包括了2个部分:终止处理__try/__finally和异常处理__try/__except,下面分别进行介绍。 终止处理__try/__finally转载 2011-12-29 21:35:51 · 523 阅读 · 0 评论 -
让程序在崩溃时体面的退出之Unhandled Exception
程序是由代码编译出来的,而代码是由人写的。人非圣贤,孰能无过。所以由人写的代码有缺陷是很正常的。当然很多异常都在开发阶段被考虑到而添加了处理代码,或者用try/catch对可能出现异常的地方进行额外的照顾。可是,还是会有一些无法预料的异常(Unhandled Exception)在程序运行的时候出现。这些异常很多时候都会招致程序的崩溃。那么有没有什么方法可以让程序在崩溃的时候体面的退出呢?答案是肯转载 2011-12-29 21:17:37 · 714 阅读 · 0 评论