函数指针

Delphi TStream 详细介绍

ぃ、小莉子 提交于 2019-11-27 05:01:19
Delphi TStream 详细介绍 Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。   下面介绍各种对象的数据和方法及使用方法。 TStream对象   TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TStream 对象继承的对象用于在内存、Windows资源文件、磁盘文件和数据库字段等媒介中存储数据。   Stream中定义了两个属性:Size和Position。它们分别以字节为单位表示的流的大小和当前指针位置。TStream中定义的方法用于在各种流中读、写和相互拷贝二进制数据。因为所有的Stream对象都是从TStream中继承来的,所以在TStream中定义的域和方法都能被Stream对象调用和访 问。此外,又由于面向对象技术的动态联编功能,TStream为各种流的应用提供了统一的接口,简化了流的使用;不同Stream对象是抽象了对不同存储媒介的数据上的操作,因此

VC++ 字符串操作学习总结

北慕城南 提交于 2019-11-27 03:01:36
vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常 量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。 typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传 统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘\0’结尾的ANSI字符数组的指针,与char*可以互换使用,在 win32中较多地使用LPSTR。 而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变, 除此之外,它与LPSTR是等同的。 1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位

function/bind

雨燕双飞 提交于 2019-11-27 01:25:50
1、函数指针指向一类函数,这类函数的类型一样,也就是函数的返回类型和形参表一样。 2、不同的函数类型要使用不同的函数指针,才能指向它,有没有好的办法呢?   类比思考下,交换方法,对不同的类型要写不同的swap方法,解决的办法是使用泛型,对于特定的类型编译器会生成特定的swap方法。同样道理,function是泛型的函数指针,使用特定的函数类型就能生成特定的函数指针。 3、bind返回一个方法,把方法和实参绑定一起。 4、函数指针可以指向bind返回的方法,在调用时,传递实参。但是,由于bind已经绑定了实参,导致函数指针调用的时候,实参传不进去。解决办法是:bind的时候使用占位符,_1,_2,这样函数指针就可以传入实参了。 转载于:https://www.cnblogs.com/nzbbody/p/3376435.html 来源: https://blog.csdn.net/weixin_30954607/article/details/99234457

理解虚函数

邮差的信 提交于 2019-11-27 01:25:35
1、虚函数实现了运行时多态,他是如何实现的呢? 2、含有虚函数的对象,内部有一个vptr(virtual table pointer),指向虚函数表的指针。 3、含有虚函数的类有一个vtbl(virtual table),是一个数组,内部包含的是一组函数指针。 4、每个对象都有一个自己的vptr,类的所有对象共享vtbl 5、vtbl包含一组函数指针,这些函数指针指向虚函数,虚函数包括:   a、对于父类的虚函数,如果没有重写,包含父类的虚函数;   b、对于父类的虚函数,如果重写了,包含自身重写后的函数;   c、自身中,新创建的虚函数。 6、另外,运行时是如何获取对象的类型的?   在类的虚方法表中还有一个函数指针,表明类的名称。对象通过vptr,找到vtbl,然后找到类的名称,也就是对象的类型。 转载于:https://www.cnblogs.com/nzbbody/p/3382990.html 来源: https://blog.csdn.net/weixin_30568715/article/details/99234467

【转】C++ 异常

只谈情不闲聊 提交于 2019-11-27 01:24:07
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。 二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错误,但却无法检查它们何时发生(如果能检测,就可以再用户的代码里处理了,不用留给库去发现)。 Bjarne Stroustrup说:提供 异常 的 基本目的 就是为了处理上面的问题。 基本思想 是:让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常,然后它的(直接或者间接)调用者能够处理这个问题。 The fundamental idea is that a function that finds a problem it cannot cope with throws an exception, hoping that its (direct or indirect) caller can handle the problem. 也就是《C++ primer》中说的:将 问题检测 和 问题处理 相分离 。 Exceptions let us separate problem detection from problem

C 传递数组给函数

只谈情不闲聊 提交于 2019-11-26 20:26:07
C 传递数组给函数 如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。 方式 1 形式参数是一个指针(您可以在下一章中学习到有关指针的知识): void myFunction(int* param) { . . . } 方式 2 形式参数是一个已定义大小的数组: void myFunction(int param[10]) { . . . } 方式 3 形式参数是一个未定义大小的数组: void myFunction(int param[]) { . . . } 实例 现在,让我们来看下面这个函数,它把数组作为参数,同时还传递了另一个参数,根据所传的参数,会返回数组中各元素的平均值: double getAverage(int arr[], int size) { int i; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; } 现在,让我们调用上面的函数,如下所示: 实例 #include <stdio.h> /* 函数声明 */ double getAverage(int

[转] C语言的标准(K&R C, ANSI C, C89, C90, C99)

夙愿已清 提交于 2019-11-26 19:15:20
最近在学习C语言,喜欢对某一个问题进行深究,然后就晕了,C语言的各种规则也真是多,麻烦事也多。 比方,一直在VS2010平台上学习, 变量的声明就必须在执行语句的前面,否则就报错。但是以前在编写C++程序时,好像都是随意的。有点迷糊, 百度了一下,发现很多人提到C89 和 C99……由于C89(也就是C90)是目前广泛使用并完全支持的,C99目前支持的还不太全面, 所以还是将变量的声明放在执行语句前面比较妥。(20130906) 以下部分均转自网上 ———————————————————————————————————— C语言的标准(K&R C, ANSI C, C89, C90, C99) 0、C语言,1973年由Dennis M. Ritchie设计和实现。 1、 K&R C 。1978年由Kernighan和Ritchie合写的书《The C Programming Language》,形成了C语言的事实的标准,简称为K&R C。 2、 ANSI C ( C89 或 C90 )。1989年,美国国家标准局(ANSI)颁布了第一个官方的C语言标准(X3.159-1989),简称为ANSI C或C89;1990年,它被国际标准化组织(ISO)采纳国际标准(ISO/IEC9899:1990),简称为C90。 这个标准是目前广泛使用并完全支持的。 3、 C99 。199年,ISO

PDO函数

安稳与你 提交于 2019-11-26 19:04:42
PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与 ADODB和MDB2相比,PDO更高效。目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择。 PDO->beginTransaction() — 标明回滚起始点 PDO->commit() — 标明回滚结束点,并执行SQL PDO->__construct() — 建立一个PDO链接数据库的实例 PDO->errorCode() — 获取错误码 PDO->errorInfo() — 获取错误的信息 PDO->exec() — 处理一条SQL语句,并返回所 影 响的条目数 PDO->getAttribute() — 获取一个“数据库连接对象”的属性 PDO->getAvailableDrivers() — 获取有效的PDO驱动器名称 PDO->lastInsertId() — 获取写入的最后一条数据的主键值 PDO->prepare() — 生成一个“查询对象” PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement” PDO->quote() — 为某个SQL中的字符串添加引号 PDO->rollBack() — 执行回滚 PDO->setAttribute()

三十分钟学习STL【转载】

≯℡__Kan透↙ 提交于 2019-11-26 18:36:52
原文: http://net.pku.edu.cn/~yhf/UsingSTL.htm 太长30分钟是看不完的,不过花一个小时把他看完能对STL有个大致的了解,g++下需要加iterator头文件 以下为原文 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。 要点 STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。 STL另一个重要特性是它不是面向对象的。为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。这好像是一种倒退,但这正好是使得STL的组件具有广泛通用性的底层特征。另外,由于STL是基于模板,内联函数的使用使得生成的代码短小高效。 提示

STL list【转】

▼魔方 西西 提交于 2019-11-26 18:32:48
原文:http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832364.html 各个容器有很多的相似性。先学好一个,其它的就好办了。先从基础开始。 先看看他们的分类吧 标准 STL 序列容器 :vector、string、deque和list。 标准 STL 关联容器 :set、multiset、map和multimap。 非标准序列容器 slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。 非标准关联容器 hash_set、hash_multiset、hash_map和hash_multimap。 (各容器成员对比见: 【STL】各容器成员对比表 ) 先看看list。 list STL中的list就是一双向链表,可高效地进行插入删除元素。 list不支持随机访问。所以没有 at(pos)和operator[]。 list对象list1, list2分别有元素list1(1,2,3),list2(4,5,6)。list<int>::iterator it; list成员 说明 constructor 构造函数 destructor 析构函数 operator= 赋值重载运算符 assign 分配值 front 返回第一个元素的引用 back 返回最后一元素的引用 begin 返回第一个元素的指针