（眼兵衛内の段）道芝の姉お来は、親里である眼兵衛のところにすでに戻っている。しかし同居するお来の母は重い病に罹り、その薬料として大枚の金が必要である。お来は致し方なく、その金を工面するために自らの身を廓に売る覚悟をしたのだった。お来は夫源蔵のことやわが身の上を思って嘆きつつも奥へと入る。そこへ妹の道芝が現れる。病床より起きた母親が道芝を内へと招き入れると、道芝は母に、折入って話があるのだという。道芝と母も奥へと入る。やがてお来が廓へと向かうため出かけようとすると、仁木将監の家来犬淵藤内が手勢を率いて踏み込み、男と偽り足利の館に忍び入った咎で道芝を討つという。藤内は道芝とよく似たお来を間違えて連れて行こうとするので、母親が奥から出てきて止めるが、紙崎主膳の家来雪平を近くで見たという知らせを聞き、藤内は後で首は貰い受けるといって立ち去った。母は道芝が縫之介の胤を宿していることを聞いたので、道芝の身代りになってくれるようお来に涙ながらに頼む。幼少の頃お来は病がちで、その薬代のため道芝が廓に身を売るという事情があった。お来は嘆きながらも身代りとなることを決心し、ともに奥へと入った。眼兵衛が帰ってきたが、これもなにやら様子がおかしい。じつは眼兵衛は、やはり道の途中で娘の道芝を手にかけたのだった。ところがその殺したはずの道芝が奥にいると聞いてびっくりする。やがて母は道芝の身代りとしてお来を斬ろうとするが道芝が止めに入り、さらに眼兵衛がその刀をもぎ取り道芝に斬りつけた。その途端に道芝の姿は掻き消え、あとには道芝の切り首が現れる。道芝は幽霊となって、母や姉に会いに来たのだった。この有様に母もお来も嘆く暇のあらばこそ、そこへ女衒が駕籠を連れて現われ、お来が身を売った代価である大枚の金を残し、お来を駕籠に乗せ連れて行ってしまう。眼兵衛はお来を行かせられぬと、金を持って表に飛び出そうとするのを、声を掛けてあらわれたのは紙崎主膳であった。主膳は、お来が行った先はじつは廓ではなく、自分が詮議の筋あって廓からの迎えと偽り連れて行ったのであり、さらに眼兵衛がじつは、先年滅びた赤松満祐の余類であろうと見破る。眼兵衛は思い余って手にした刀を自分の腹に突っ込み、われこそはもと赤松満祐の足軽、嘉嶋権平であると名乗り、娘やその腹の孫まで手にかけねばならなかった因果を妻に詫びつつ息絶えた。主膳は弔い料を残して立とうとするが、様子を伺っていた犬淵藤内が手勢とともに主膳に襲い掛かる。そこに雪平が駆けつけ、藤内以下の者どもをことごとく討ち取り、主膳主従はその場を立ち去るのであった。
C++による多重定義：// (1-1): 引数の数の違いによる多重定義int Function(void);int Function( int value );int Function( int value0, int value1 );// (2): 引数の修飾子の違いによる多重定義int Function( int *value );int Function( int const *value );int Function( int *const *value );int Function( int *const *const *value );// (3): 引数の型の違いによる多重定義int Function( char value );int Function( std::complex< double > const &value );int Function( ... ); // ※1template< class Type > int Function( Type const &value ); // ※2struct Example{    // (1-2): 引数の型の違いによる多重定義(コンストラクター版)    Example(void);    Example( int value );        // (4): メンバー関数の修飾子の違いによる多重定義    int Function(void);    int Function(void) const;        // (1-3): 引数の型の違いによる多重定義(メンバー関数版)    int Function( int value );    // (5): 戻り値の型の違いによる多重定義    operator bool (void) const;    operator int (void) const;};基本的には「(1)引数の数」と「(2)修飾子」「(3)型」が異なっていれば関数に同じ名前を付けられるようになっている。また、大域関数で可能な多重定義はメンバー関数で全て可能である。メンバー関数は更に「(4)修飾子の違い」による多重定義と変換演算子を用いた時に限り可能な「(5)戻り値の型の違い」による多重定義が可能になっている。JavaやC#などC++以外の言語では(1)と(3)の範囲にとどまっている事が多い。C++で特に特徴的なのは※1の省略子と※2のテンプレート関数を多重定義できる点である。省略子を引数にとる関数はあらゆる引数を受け付ける関数である。引数の型や数を無視する反面、関数の内部では一切引数を参照することができない。テンプレート関数はint等明示的に型を書いた関数より選択される優先度が低く、省略子を用いた関数は更に低い。この特性を利用して同じ扱いで処理できる型はテンプレート関数で処理、特別扱いが必要な型であれば明示的に型を書いた関数で処理、引数の数が異り多重定義した関数群では対処しようがない引数は省略子を用いた関数を使って何もしない等既定の処理をさせるようにすることができる。FORTRANによる多重定義:module Example    implicit none        ! Function0, Function1をFunctionとして定義。FORTRANに予約語はなくFunctionは予約語ではない。    interface Function        module procedure Function0, Function1    end interface Functioncontains    function Function0( value1 ) result( value0 )        !省略    end function Function0        function Function1( value1, value2 ) result( value0 )        !省略    end function Function1end module Example特徴的なのは関数の定義としては多重定義を認めないものの呼び出し方法として多重定義を認めている点である。呼び出し時の名前と定義の名前は別物であるため混乱の原因となるだけではあるが全く別の名前をつける事も可能になっている。