2012年5月15日

摘要: Twisted 的 callInThread 和 callFromThread 区别这两个函数的定义在 IReactorThreads 的文档里。Method callInThread :Run the callable object in a separate thread.Method callFromThread :Cause a function to be executed by the reactor thread.Use this method when you want to run a function in the reactor's thread from ano 阅读全文
posted @ 2012-05-15 11:26 很多不懂呀。。 阅读(3761) 评论(1) 推荐(1) 编辑
摘要: 有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.struct模块中最重要的三个函数是pack(), unpack(), calcsize()pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuplecalcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存... 阅读全文
posted @ 2012-05-15 10:15 很多不懂呀。。 阅读(6424) 评论(0) 推荐(0) 编辑

2012年5月10日

摘要: 我们可以使用 __new__ 这个特殊方法。该方法可以创建一个其所在类的子类的对象。更可喜的是,我们的内置 object 基类实现了 __new__ 方法,所以我们只需让 Sing 类继承 object 类,就可以利用 object 的 __new__ 方法来创建 Sing 对象了。classSing(object):def__init__():"disablethe__init__method"__inst=None#makeitso-calledprivate@staticmethoddefgetInst():ifnotSing.__inst:Sing.__inst=o 阅读全文
posted @ 2012-05-10 10:42 很多不懂呀。。 阅读(217) 评论(0) 推荐(0) 编辑

2012年3月1日

摘要: C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来)打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。要通过一个流对象打开一个文件,我们使用它的成员函数open 阅读全文
posted @ 2012-03-01 13:42 很多不懂呀。。 阅读(1023) 评论(0) 推荐(0) 编辑
摘要: 重载一个操作符,就是编写一个函数,当类对象按预先规定的方式使用这个运算符时,该函数就被调用。下面列出重载操作符时必须遵循的一些规则:不能重载用于C++内部数据类型的操作符。例如,不能重载双目整数加法运算符。不能自己创造C++语言中不存在的操作符。例如,美元符号$不是C++中的运算符,因此不可以用来重载除了下列操作符,其他操作符皆可被重载. 类成员运算符.* 成员指针运算符::域解析运算符?:条件表达式运算符无法改变运算符的优先级以下代码以友元的方式重载了流运算符<<,以类成员的方式重载了算术运算符+#include <iostream>#include <stri 阅读全文
posted @ 2012-03-01 11:17 很多不懂呀。。 阅读(501) 评论(0) 推荐(0) 编辑

2012年2月29日

摘要: error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 intc:\evan\workspace\1\1\netwowkippack.h(50) : error C2146: 语法错误 : 缺少“;”(在标识符“nSourPort”的前面)c:\evan\workspace\1\1\netwowkippack.h(50) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 intc:\evan\workspace\1\1\netwowkippack.h(50) : error C4430: 缺少类型说明符 - 假定为 阅读全文
posted @ 2012-02-29 17:39 很多不懂呀。。 阅读(6654) 评论(0) 推荐(0) 编辑
摘要: 1.vector iterators incompatible发现引发这个错误的代码如下:for (VectorType::iterator it = someVector.begin();; it != someVector.end();++it;){ if (*it== value) { someVector.erase(it); }}代码中,在erase操作后,没有修改it就继续循环,在与end()比较时,断言出现。这里的主要问题是,vector可以用任意方法实现erase,不保证在erase一个元素后,后续的元素一定被移动到这个iterator所引用的位置(地址)。当然,这在几乎所有S 阅读全文
posted @ 2012-02-29 10:19 很多不懂呀。。 阅读(1808) 评论(0) 推荐(1) 编辑

2012年2月28日

摘要: 在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。 下面用一个最简单的例子来说明。 类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下: lxTest.h文件内容:class ClxTest {public: ClxTest(); virtual ~ClxTest(); void DoSomething();}; lxTest.cpp文件内容:#include "lxTest 阅读全文
posted @ 2012-02-28 17:05 很多不懂呀。。 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:class B;class A{ public: B b;};class B{ public: A a;};因为在A对象中要开辟一块属于B的空间,而B中又有A的空间,是一个逻辑错误,无法实现的。在这里我们只需要把其中的一个A类中的B类型成员改成指针形式就可以避免这个无限延伸的怪圈了。为什么要更改A而不是B?因为就算你在B中做了类似的动作,也仍然会编译错误,表面上这仅仅上一个先后顺序的问题。 为什么会这样呢? 阅读全文
posted @ 2012-02-28 16:44 很多不懂呀。。 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么需要智能指针?简单的说,智能指针是为了实现类似于Java中的垃圾回收机制。Java的垃圾回收机制使程序员从繁杂的内存管理任务中彻底的解脱出来,在申请使用一块内存区域之后,无需去关注应该何时何地释放内存,Java将会自动帮助回收。但是出于效率和其他原因(可能C++设计者不屑于这种傻瓜氏的编程方式),C++本身并没有这样的功能,其繁杂且易出错的内存管理也一直为广大程序员所诟病。更进一步地说,智能指针的出现是为了满足管理类中指针成员的需要。包含指针成员的类需要特别注意复制控制和赋值操作,原因是复制指针时只复制指针中的地址,而不会复制指针指向的对象。当类的实例在析构的时候,可能会导致垂悬指 阅读全文
posted @ 2012-02-28 15:38 很多不懂呀。。 阅读(1116) 评论(0) 推荐(0) 编辑

导航