在C++ Builder中定义事件
在C++ BUILDER中,事件是一种委托模型,它是对消息的封装。如果你用过VC,你就知道在VC中并不存在什么事件,而只有消息处理函数,而在C++ BUILDER中则是由事件处理函数来负责响应消息。同是,事件本身也是一指针,它是一个闭包,通常在C++ BUILDER中有两种事件:通知类型事件(即TNOTIFYEVENT,对WINDOWS消息的封装)和自定 ...
C++文件拷贝代码
用C++些文件拷贝程序远远比我想象的要困难的多,和C#仅使用的File类和Directory类相比,直接操作windows api更加有趣。这个过程让我体会到的不仅仅是api,更多是编写程序这一个过程的本质。
先和大家分享一下我的代码,还请各位C++前辈们指教。
.h文件
#pragma once
#include
#include "file.h"
using namespace std;
name ...
使用C++打印菱形图案
打印下面的图案:
菱形打印
#include
using namespace std;
int main()
{
int n=5;
//生成菱形上部分的星号,前N行
for(int i=1; i
C++对象的放置
经历过从c到c++的人,一定想知道c++编译器是如何安排类的成员的.这里我大概的作一下介绍,并有一些代码供你进行测试,希望对大家有点作用吧.
其实这里的标题或许有点大了,简单的说,类的非static成员是按照声明的顺序存放在内存区的,而类的static成员和一般的static变量的存储格式一样.我不从简单的东西入手了,直接从一个相对复 ...
设计模式的解析和实现(C++)之四-Prototype模式
作用:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
UML结构图:
抽象基类:
1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数
接口函数:
1)Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象.
解析:
Prototype模式其实就是常说的"虚拟构造函数"一个实现,C++的实现机制中并没有 ...
谈函数指针(全局/类成员函数)和函数对象
函数指针(全局函数/类成员函数)、函数对象(Function object)
一. 函数指针类型为全局函数.
#include "stdafx.h"
#include
using namespace std;
class TestAction;
typedef void (*fp)(int);
void Drink(int i)
{
cout
二. 函数指针类型为类成员函数.
#include "stdafx.h"
#include
using namespace std;
class Ac ...
确定有穷自动机分析内核
前些时候学习编译原理,同时也为 DocWizard 做词法分析技术的准备,于是便想出了一种词法分析内核。这个分析内核可以在不改变代码的情况下分析不同的 DFA。
分析器的基本构造
如图一所示,脚本 Scripts 进入分析内核 ParsingKernel,分析内核根据 DFA 规则作词法分析,生成单词序列 WordsSequence。
图一
其中的 DFA Rules ...
COM原理及应用----COM对象和接口
1、COM对象的理解
COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口。
2、COM对象的标识-CLSID
GUID是一个128位的随机数,重复概率极低。它的值来源于两部分:空间值(网卡地址或随机数)和时间值。
获得GUID值可以使用VC++提供 ...
C++惯用法之RAII
C++号称是多范式的通用编程语言,但是RAII实际上已在C++编程技术中变成 不可或缺的核心技术。RAII几乎无处不在的身影不仅仅来自于C++之父的大力提 倡,更来自于这一技术本身的简单,高效和几乎无所不能的适应面。
如 果您还没有听说过RAII的话,那么我在这里再重新叙述一遍,RAII是下列英文短 语的首字母缩写:
Resource Ac ...
C++删除数组内重复的数据
笔试时曾经遇到过的一道题,当时没有好的想法。今天无意中想起,于是把自己的一种解决方法记下来。
1. main.cpp
1./**
2. * 问题描述:
3. * 删除数组内重复的数据
4. *
5. * 一个解决方法:
6. * 可以先将数组排序,然后再删除
7. * 如一个已经排好序的整数数组:1, 1, 2, 2, 3
8. */
9.
10.#include
11.
12.using st ...
C++中优化BOOL变量的声明
通常我们会这样声明BOOL 变量:
class CMyClass {
...
BOOL m_bVar1;
BOOL m_bVar2;
BOOL m_bVar3;
BOOL m_bVar4;
BOOL m_bVar5;
BOOL m_bVar6;
BOOL m_bVar7;
BOOL m_bVar8;
...
};
考虑到BOOL 变量在Win32 下其实是一个int ,占4个字节,那么上面8个BOOL变量就会占去 32个字节。
typedef int BOOL; // BOOL takes 4 bytes ...
COM原理及应用---- 结构化存储
1、结构化存储
COM的结构化存储(structured storage)机制,也称为永久存储(persistent storage)机制。结构化存储可以说是软件存储技术的一个重要进展,COM针对组件软件的需要,在文件系统的基础上,提出了结构化存储的概念。利用结构化存储,组件程序之间可很好地协同工作,一个组件程序可以与另一个组件程序共享同一个 ...
COM原理及应用----基于COM的程序设计
1、COM的作用
COM作为一种软件模型,提供了程序之间通信的标准,但其最大的贡献在于对程序设计方法的变革。COM结合了对象技术和组件技术两种特性。对象特性使得应用系统的设计和实现更加符合现实世界的面貌;组件特性使得应用系统可以充分发挥组件的优势,以适应现代应用的需要。
2、组件的特性
组件之间可以在二进制级别上 ...
COM原理及应用----自动化(Automation)对象
1、自动化技术
自动化技术既以前提到的OLE自动化。虽然自动化技术建立在COM基础上,但自动化要比COM应用广泛得多。一方面,自动化继承了COM的很多优点,比如语言无关、进程透明等特性;另一方面,自动化简化了COM的一些底层细节,比如属性和方法的处理、一组专用于自动化的数据类型等。自动化也是OLE的基础,所以可以把自动 ...
C++中<<的优先级
发现#include
#define GET_BIT(a, b, c) a
C的优先级口诀
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:> ,关系:> = ...
数据库在C++程序中使用方法
在本教程中,我假设大家都知道如何使用C++的类进行工作,因为我所有的数据结构,要立足于他们。我遇到过关于数据结构的教程,但是很难找到一个使用OOP来编写的。因此,这其中将主要集中于用一个类来编写数据结构。
栈
在编写代码时,堆栈是最常用的数据结构。它的概念简单,编写也比较简单。有这么一个情况,桌子上有堆成一 ...
C++实现自动为对象添加“属性”访问代码
对于c#而言,一个类可以有成员变量、成员函数、和属性,然而在C++中却没有“属 性”这一概念。为了达到相同的效果,在C++中一般是采用get_XXX()和set_XXX()两个 函数来实现外部对成员变量的访问。这样做的弊端很明显,类的声明中多了很多冗余的代码 :
private:
int m_data;
public:
int get_data() const;
int set_data(in ...
NetBeans中进行C/C++开发
要求
在开始 C 或 C++ 开发之前,您必须要安装以下软件:
NetBeans IDE 6.0
NetBeans C/C++ 包
GNU C 和 C++ 编译器、make 和 gdb(Windows 平台 );GNU C 和 C++ 编译器,或 Sun C 和 C++ 编译器、make 和 gdb(Solaris 和 Linux 平 台)
有关下载和安装所需软件的详细信息,请参见 NetBeans IDE 6.0 安装说明和安 装并配 ...
COM原理及应用----统一数据传输
1、概述
COM提供了应用之间数据交换的标准方案,称为统一数据传输(UDT,uniform data transfer)。统一数据传输技术建立在结构化存储技术的基础之上,它通过一个“数据对象”来表达要传输的数据信息,因此,统一数据传输技术的核心在于数据对象的定义和实现。剪贴板和拖-放是统一数据传输的两个典型应用。
2、数据交换标 ...
C++内存管理变革(3):另类内存管理
最简单的C++/Java程序
最简单的Java程序:
class Program
{
public static void main()
{
new int;
}
}
对应的C++程序:
void main()
{
new int;
}
我想没有一个Java程序员会认为上面的Java代码存在问题。但是所有严谨的C++程序员则马上指出:上面这个C++程序有问题,它存在内存泄漏。但是我今天想和大家交流的一个观念是:这 ...