struct
は他のstruct
から継承することはできません。
しかしDはstruct
のために、その機能を拡張する別の
素晴らしい方法を提供します: サブタイピングです。
構造体型はalias this
としてそのメンバの1つを定義できます:
struct SafeInt {
private int theInt;
alias theInt this;
}
それ自身型にハンドルされないSafeInt
の任意の関数や操作は
alias this
したメンバに転送されます。
外部からSafeInt
は普通の整数のように見えます。
これは他の型を新しい機能で拡張することを可能にし、
それでいて実行時のメモリの面でゼロ・オーバーヘッドです。
コンパイラはalias this
メンバにアクセスした時にするべきことをします。
alias this
はクラスにも動作します。