2013年12月27日
摘要: 1、Bug描述 使用boost串口编程,main方法调用异步read,传入回调方法,运行程序,出现 “串口读取位置...时发生访问冲突”。而在main方法中,使用串行,while(true){read, write ,} 不会报错。2、最后问题,终于找到了。使用同步方法,main方法不会退出,而使用异步方法,main方法退出,这个时候再去执行 回调方法的时候,当然会报错,main方法都退出了。3、解决办法:使用异步方法的时候,main方法使用while(true){sleep;} 紧接思考,如果main方法不再做其他事,直接使用同步方法就好了。因为异步方法的使用场景是:去让别人做一件事(别人. 阅读全文
posted @ 2013-12-27 20:03 Andy Niu 阅读(575) 评论(0) 推荐(0)
摘要: 1、C++代码提供Python需要的接口: 1 #include "stdafx.h" 2 #include 3 #include 4 using namespace std; 5 6 string greet() 7 { 8 for(int i=0;i>> import hello4 >>> hello.greet()5 'hello'6 >>> 阅读全文
posted @ 2013-12-27 19:33 Andy Niu 阅读(442) 评论(0) 推荐(0)
摘要: 1、由于【36】绝不重新定义继承而来的non-virtual方法,现只考虑带有缺省参数值的virtual方法。2、为什么绝不重新定义继承而来的缺省参数值? 缺省参数值是静态绑定,virtual方法是动态绑定。现在考虑父类virtual方法带有缺省参数值,子类重写了virtual方法,父类指针指向子类对象,调用virtual方法,导致的结果是:用父类的缺省参数值初始化形参,调用子类重写的方法实现。这肯定不是程序员预期的结果。3、怎么解决这个问题? 使用NVI,父类通过non-virtual方法调用virtual方法,父类non-virtual方法使用缺省参数值,父类virtrual方法不使用.. 阅读全文
posted @ 2013-12-27 19:01 Andy Niu 阅读(416) 评论(0) 推荐(0)
摘要: 1、绝不重新定义继承而来的non-virtual方法,为什么? 首先想想,non-virtual方法是干什么的?也就是说,它的使用场景。父类的non-virtual方法,其实就是告诉子类,继承实现,子类决定是否继承接口(也就是子类决定是否继续提供接口)。如果重新定义了non-virtual方法,就不符合它的使用场景。2、如果想重新定义继承而来的方法,应该把父类方法修改为virtual方法,因为virtual方法的使用场景是:父类告诉子类,继承接口,修改实现。3、如果重新定义了继承而来的non-virtual方法,会出现什么问题呢? 因为non-virtual方法是静态绑定,也就是说,调用n.. 阅读全文
posted @ 2013-12-27 18:42 Andy Niu 阅读(348) 评论(0) 推荐(0)
摘要: 1、什么是复合? 复合是类型之间的一种关系,某种类型的对象内含其他类型的对象。2、为什么需要复合,他解决什么问题? 为了代码复用。3、复合有两层含义:Has-A和根据某物实现出。在应用域中,表示Has-A,比如:Person有一个地址,有一个所属公司。在实现域,表示根据某物实现出,比如缓冲区,互斥器等概念。4、复合可以分为:关联,聚集,组合。关联是1对1的关系,聚集和组合是多对1的关系。组合比聚集的关系更紧密,举例来说,大雁聚集成雁群,两个翅膀(和其他的部位)组合成大雁。5、关联与依赖有区别,关联表示内含一个对象,依赖表示执行一个动作的时候,依赖形参。比如:Person关联地址,Perso.. 阅读全文
posted @ 2013-12-27 18:31 Andy Niu 阅读(347) 评论(0) 推荐(0)