`
qiezi
  • 浏览: 497685 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表

DMD 0.149发布

    博客分类:
  • D
最近3个版本增加/移除了一些新特性。 0.147中加入了match表达式,不过感觉用处太小了点,果然0.148中又去掉了。 0.148中去掉了bit类型,增加了BitArray类和bool基本类型。on_scope语句算是个比较重要的更新,可用于在代码块结束、异常、成功执行时,完成特定功能。 0.149中on_scope语句改成了scope(...)。
不知道原作者是谁,我是从http://1000y.jx520.net/看到的,那里标注的作者是ddcrack,文章里面没标明作者。 奔腾指令速查手册 指令首字母快速索引: A B C</c> D E F H I J L M N
C++ 0x keynote(以下简称0x)中描述了这样一个看起来不错的东西:1、本地调用代码: // use local object: X x; A a; std::string s("abc"); // … x.f(a, s); 2、使用远程代理wrapper层: // use remote object : proxy<X> x; x.connect("my_host"); A a; std::string s("abc"); // … x.f(a, s); 仅使用一个包装层就完 ...
Aspect C++支持“虚切面”,类似C++中的虚函数。方面可以继承,“派生方面”可以重写“基方面”的“虚切面”,类似C++中的类继承。有了这个特性,就可以实现一些模式了,这里列出AOP中经典的观察者(Observer)模式[注]。[注]这个说法不太妥当,观察者模式是经典的设计模式,这里的意思是说AOP经典的观察者模式实现。它的代码如下: aspect ObserverPattern {    // 管理subjects和observers的数据结构    // TODO public:    // 角色接口    struct ISubject {};    struct IObser ...
前面简单介绍了Aspect C++,相信没人看出它有什么特别强大的地方。这次特别挑了一个合适的例子,检查内存泄漏。首先看一个普通的程序:1、test.h #ifndef __TEST_H__#define __TEST_H__class Test1{};class Test2{};class Test3{};#endif // __TEST_H__2、main.cc #include "test.h"int main (){    Test1 test1;    Test2 test2;    Test3 test3;    new Test1()

C++之AOP

    博客分类:
  • c++
AOP是近年炒得很热,但却用得很少的一门技术,不过这并不能阻止我去学习它。既然能一度炒得火热,必定有过人之处。说AOP是一种思想或许更适合一些,它并不描述哪一种专有的技术,也不指定实现方式。众所周知,C++没有丰富的动态类型信息,更没有动态生成类的功能(C++类型在编译后就基本上没有类型存在了),所以无法像java一样采用动态代理来实现AOP。Aspect C++是C++的一个AOP实现,它使用了插入代码的方法。一个典型的Aspect C++示例需要一个C++源文件(.cpp)、一个Aspect C++源文件(.ah),通过ac++编译器把C++源文件和Aspect C++源文件转换成混合 ...
CSDN上看到有人问能否实现一个效率较高的max函数,效率接近于宏,于是自动动手写了一个。由于max宏在判断不同类型时,能够返回大的那个类型(表示范围大),所以只能使用模板来进行返回类型的推导。在VC8上打开O2或Ox优化选项,测试结果是与宏效率相等。全部实现如下: #include <typeinfo>#include <cassert>#include <windows.h>#include <iostream>template <class T, class U, bool B>struct BigType{    type ...

DMD 0.141发布

    博客分类:
  • D
What's New for D 0.141 Dec 1, 2005 New/Changed Features The predefined version identifier D_InlineAsm has been changed to D_InlineAsm_X86. The former made no sense, and although it is still defined, it is deprecated. Added D code coverage analyzer. Added .mangleof property for t ...

DMD 0.140发布

    博客分类:
  • D
Nov 23, 2005 New/Changed Features Added std.string.soundex. Added std.string.entab. Added std.string.wrap. Added std.string.abbrev. Added std.windows.charset (thanks to Stewart Gordon, D/28246). Added std.demangle to demangle D names. Improved promotion o ...
DMDScript是Digital Mars提供的一个符合ECMA 262规范的脚本语言,采用D语言编写,开放源代码,可以从http://www.digitalmars.com/dscript看到详细信息,另外有一个C++的实现版本。 另外2个符合ECMA 262规范的脚本语言分别是Netscape的javascript和Microsoft的JScript,目前DMDScript和其它2个不完全兼容,不过效率要高一些。DMDScript提供了一个简单的测试,生成8190以内的质数,迭代10次,在我的机器上,javascript执行耗时566毫秒,DMDScript执行耗时188毫秒,整整 ...
D语言的模板使用非常方便灵活,受够了C++模板编写之苦的同学们可以感受一下D语言的模板,下面先展示一个D语言编写的多分派委托类,在我的旧BLOG上曾经写过一个C++版本的,整个过程感觉非常痛苦。。。 闲话少说,请看代码: import std.stdio; template DelegateHandlers(HandlerType, FunctionType) {     HandlerType[] handlers;     FunctionType[] functions;     void opAddAssign(HandlerType h)     {         h ...
这是一个从C移植到D的代码,原文请见“Embed an HTML control in your own window using plain C”,它用C结构模拟了虚表,并且实现了多个接口以完成对Web Browser控件的调用。 在看完他的代码之后,我对于COM/OLE的了解加深了一些,以前使 ...
private import std.stdio, std.process; void test(int a, inout int b, out int c) {     writefln(a);     writefln(b);     writefln(c);     a = 3;     b = 5;     c = 7; } void main () {     int a = 0, b = 1, c 
v0.138 实现了字符串直接切片调用:     char[] a = "abcde"[2..3];     writefln(a);     char b = "abcde"[3];     writefln(b); 另外修复了一些编译器和文档生成的BUG。 v0.137的重要更新有: 隐式类型引用: auto c = "abcde";  // c变量自动获得类型char[] e
1、去掉了丑陋的宏。C/C++中的宏是很令人厌烦的,D不允许再使用它。2、好用的字符串常量表达式。除了类C的使用双引号的字符串常量表达式以外,还可以使用`字符。可以使用x"68 65 6C6C 6F"来表示"hello",r"ab\na"则忽略字符串常量中转义字符的转义作用,还可以在字符串常量后加上c, w或d来指示字符串常量是char[]类型、wchar[]类型还是dchar[]类型。可以使用~运算符连接2个字符串。3、数字。数字可以直接使用,还可以这样来定义:int a = 3_029_301_000; 数字直接量(包括整数、 ...
Global site tag (gtag.js) - Google Analytics