13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}}这 样 就 可 以 让 该 文 件 自 己 的 子 过 程 ( 类 方 法 ) 调 用 一 个 代 码 超 出 该 词 法 范 围 ( 因 而 无 法 访 问 )的 方 法 。12.6 实 例 析 构 器和 <strong>Perl</strong> 里 任 何 其 他 引 用 一 样 , 当 一 个 对 象 的 最 后 一 个 引 用 消 失 以 后 , 该 对 象 的 存 储 器 隐 含地 循 环 使 用 。 对 于 一 个 对 象 而 言 , 你 还 有 机 会 在 这 些 事 情 发 生 的 时 候 ( 对 象 内 存 循 环 使 用 )捕 获 控 制 , 方 法 是 在 类 的 包 里 定 义 DESTROY 子 过 程 。 这 个 方 法 在 合 适 的 时 候 自 动 被 触 发 ,而 将 要 循 环 使 用 的 对 象 是 它 的 唯 一 的 参 数 。在 <strong>Perl</strong> 里 很 少 需 要 析 构 器 , 因 为 存 贮 器 管 理 是 自 动 进 行 的 。 不 过 有 些 对 象 可 能 有 一 个 位 于存 储 器 系 统 之 外 的 状 态 ( 比 如 文 件 句 柄 或 数 据 库 联 接 ), 而 且 你 还 想 控 制 它 们 , 所 以 析 构 器还 是 有 用 的 。package MailNotify;sub DESTROY {my $self = shift;my $fh = $self->{mailhandle};my $id = $self->{name};print $fh "\n$id is signing off at " . localtime( ) . "\n";close $fh;# 关 闭 mailer 的 管 道}因 为 <strong>Perl</strong> 只 使 用 一 个 方 法 来 构 造 一 个 对 象 , 即 使 该 构 造 器 的 类 是 从 一 个 或 者 多 个 其 他 类 继承 过 来 的 也 这 样 ,<strong>Perl</strong> 也 只 是 每 个 对 象 使 用 一 个 DESTROY 方 法 来 删 除 对 象 , 也 不 管 继承 关 系 。 换 而 言 之 ,<strong>Perl</strong> 并 不 为 你 做 分 级 析 构 。 如 果 你 的 类 覆 盖 了 一 个 父 类 的 析 构 器 , 那么 你 的 DESTROY 方 法 可 能 需 要 调 用 任 意 适 用 的 基 类 的 DESTROY 方 法 :sub DESTROY {my $self = shift;# 检 查 看 看 有 没 有 覆 盖 了 的 析 构 器309

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!