2013年7月23日

摘要: 一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而 那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的 API函数有关,一般在帮助中有说明回调函数的参数和返回值等。C++中一般要求在回调函数前加CALLBACK( 阅读全文
posted @ 2013-07-23 16:42 GIS-mentor 阅读(210) 评论(0) 推荐(0)

2012年2月26日

摘要: 最近经常碰到位运算,现对常见的位运算总结如下:1、位移运算符>>:称为按位右移运算符,将左边数的二进制按位向右移指定的位数。<<:称为按位左移运算符,将左边数的二进制按位向左移指定的位数。位移运算符作用于其左侧的变量,其右侧的表达式的值是移动的位数,运算结果是移动后的变量结果。例如:b=a<<2,a的值左移两位并赋值给b,而a本身的值不改变。向左移位在低位上补0,向右移位在高位上补0。右移时可以保持结果的符号位,也就是右移时,如果最高位为1,是符号位,则补1而不是补0。右移运算符常常用来实现整数除法运算,左移运算符用来实现整数乘法运算。其中用来实现乘法和除法 阅读全文
posted @ 2012-02-26 11:17 GIS-mentor 阅读(505) 评论(0) 推荐(0)

2011年11月10日

摘要: 最近一段时间一直在对一个开源科学数据可视化的软件进行学习, 起初是简单的插件开发, 随着进度的加深, 现在这个软件本身的一些功能已经不能满足导师的思维......说到这里必需得吐个槽了, 我是学GIS的, 为什么非得让我搞个科学数据可视化的软件来学习呢??? 伴着不解与迷惘, 我走过了一段并不光彩快乐的日子. 回过头一看, 进度还在那里, 怎一个无助了得......吐槽够了, 就得进入正题, 因为这个开源的名为VisIt的软件, 其面向的主要对象是诸多的科学数据, 最好是利用PC集群来进行可视化, 功能还是了得了, 源程序将进150万行, 只多不少. 工程采用CMake来管理, 从我的理解上. 阅读全文
posted @ 2011-11-10 10:52 GIS-mentor 阅读(3398) 评论(1) 推荐(1)

2011年9月30日

摘要: C++读写文件掌握文本文件读写的方法了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include<iomanip.h>#include<fstream.h>void main(){ ofstream f1("d:\\me.txt"); //打开文件用于写,若文件不存在就创建它 if(!f1)return; //打开文件失败则结束运行 f1<<setw(20)<<&qu 阅读全文
posted @ 2011-09-30 17:25 GIS-mentor 阅读(246) 评论(0) 推荐(0)
 
摘要: 这些天遇到了一些编程上的问题, 于是重新查阅《C++ Primer》这本巨擘。在其中面向对象的章节中,看到了动态绑定(dynamic binding)与静态绑定(static binding)的内容。想来虽然很早就有了这一本这样的书,却没有很好的精读细读,想来还是有点汗颜的。看来一些基础的知识还是要掌握的牢固为妙,不然,你会因为不精通而在编码过程中犯下许多低级错误。 通过查阅资料,在这里谈一下自己对动态绑定及静态绑定的理解。 首先要解释什么叫做动态绑定和静态绑定: 一言以蔽之:C++中,非虚函数都是静态绑定,而虚函数却是动态绑定。C++语言默认采用的是静态绑定。class Person {p. 阅读全文
posted @ 2011-09-30 17:04 GIS-mentor 阅读(349) 评论(0) 推荐(0)
 
摘要: 【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意: 函数指针和它指向的函数的参数个数和类型都应... 阅读全文
posted @ 2011-09-30 16:11 GIS-mentor 阅读(212) 评论(0) 推荐(0)
 
摘要: 讲术回调函数的一些基本内容. 阅读全文
posted @ 2011-09-30 12:06 GIS-mentor 阅读(258) 评论(0) 推荐(0)

2011年6月8日

摘要: 刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样: 1 //a.h 2 #include "b.h" 3 class A 4 { 5 ... 6 private: 7 B b; 8 }; 9 //b.h10 #include "a.h"11 class B12 {13 ...14 private:15 A a;16 };一编译,就出现了一个互包含的问题了,这时就有人跳出来说,这个问题的解决办法可以这样,在a.h文件中声明类B,然后使用B的指针。 阅读全文
posted @ 2011-06-08 16:16 GIS-mentor 阅读(601) 评论(2) 推荐(0)