torutkのブログ

ソフトウェア・エンジニアのブログ

2008-09-01から1ヶ月間の記事一覧

契約による設計(Design by Contract)の実装

C++

契約による設計(Design by Contract)の実装を検討 - torutkのブログで契約による設計の実装を検討しました。今回は、検討に従って実際にC++でプログラムコードに表してみます。 事前条件 C言語標準マクロ assert を用いた実装 C言語の標準マクロassertを使…

契約による設計(Design by Contract)の実装を検討

C++

契約による設計では、責務を遂行する関数に対して事前条件、事後条件を定義し、クラスに対してクラス不変条件を定義します。これら条件を実行時に検証して違反が検出されればエラーを通知(伝播)することで関数の仕様と実行結果が明確になります。しかし、…

基底クラスのメンバ関数のオーバーロードを派生クラスで定義すると‥

C++

C++言語における名前隠ぺいは、関数の場合引き数に関係なく名前の一致のみで発生するため、派生クラスの定義に基底クラスのメンバー関数のオーバーロードを記述すると、基底クラスの同名関数が見つからないコンパイルエラーが発生します。(「Effective C++…

GCCの関数名展開マクロ__PRETTY_FUNCTION__

C++

GCCで提供される、関数名に展開されるマクロなのですが、__FUNCTION__と違い、引き数、戻り値、そしてネームスペースまで含めて展開されます。優れもの! logbook::Person::Person(std::string) しかし引き数にvectorがあるとものすごい展開がなされ‥。ログ…