岩崎 です。

 > > リファレンスマニュアルでは
 > > > 引数 pattern には探索する部分文字列の指定を文字列、
 > > > 文字コードを示す 0 から 255 の整数、
 > > > 正規表現のいずれかで指定します。
 > > 
 > > とあるので文字列と解約してnilが返ってくるのが自然だと感じます。
 > > 'ABC'.include?('') #==> true
 > > も何か釈然としませんが、正規表現と解釈されてしまうのでしょうか?
 > 
 > 空の文字列として解釈して、Aの前の部分にマッチしているのだと思い
 > ますが。


なかだ様、解説ありがとうございます。
意味は分かりました。

空の文字列を探すこと自体なにかの現実世界の投射になっているわけ
でもないので実装側の定義の問題なのでしょうね。Perlでも同様な動きを
しますし、rubyのStringクラスの他のメソッドでもどうような解釈をしている
ようなのでそのようなものだと理解して使います。

あと、デストラクターの件で質問を投げて、なかださんからコメントを頂いて
いるのですが、取りあえず動作上問題ないレベルにはなりました。最初
どうすればよいのか分からなくなった時のコードが当時の原型をとどめて
いないので、「なにがまずかった」かをお知らせすることができません。
申し訳ありません。