タグ

C++とOOPに関するzephyrcradleのブックマーク (3)

  • 抽象データ型 - Wikipedia

    出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2022年5月) 抽象データ型(ちゅうしょうデータがた、英: abstract data type、ADT)とは、データ構造とその操作手続きを定義したデータ型、またはデータ抽象[注釈 1]の方法の1つ。通常のデータ型であれば変数宣言で変数に束縛されるものは値であるが、抽象データ型の世界において値に相当するものはデータ構造とその操作[注釈 2]のまとまり[注釈 3]である。 抽象データ型を用いない場合、データ構造またはデータの操作手続きのアルゴリズムの変更を行うとソースコード中にその変更部分が散在してしまい規模によっては修正困難となるが、データとその操作がひとまとめに記載されることになる抽象データ型においては、型の定義における実装部分を変更するだけで修正が完了

    zephyrcradle
    zephyrcradle 2009/06/13
    ADTと略すらしい。
  • デストラクタを仮想関数にしたとき動き(2)

    [戻る] wave 2008/06/11(水) 10:28:20 MSVS2008で以下のソースを実行すると落ちます。MSDEV6.0でも同じです。 理由がわからず困っています。よろしくお願いします。 class A { public: A(); ~A(); }; A::A() { cout << "A()"; } A::~A() { cout << "~A()"; } class B : public A { public: B(); virtual ~B(); }; B::B() { cout << "B()" ; } B::~B() { cout << "~B()" ; } void Test() { A* b = new(B); delete b; } --------------------- Debug Assertain Faild

    zephyrcradle
    zephyrcradle 2009/01/27
    あとで読もう。
  • C++でMix-inもどき(多重継承はそんなに悪いのか)

    はじめに プログラム例 クラスの機能の拡張 純粋仮想関数 vs デフォルト実装 インターフェースをまとめる C++ vs Java まとめ:多重継承は悪くない はじめに Javaではinterfaceを使って個々のクラスに共通する インターフェースを抽出する方法があります。 これをC++でやるには各クラスの共通の関数の宣言を 抽象基底クラスで行い、個々のクラスはそれらを(多重) 継承して実装するという方法があります。 Rubyではさらに実装ごとモジュールに抽出し、 それをクラス,モジュールにインクルードして使う というMix-inという機能があります。 実装ごとモジュールとして分離されるために再利用性が高まる、便利な機能です。 これと似たようなことをC++でやる方法を考えます。 プログラム例 これはモジュールMをクラスAにインクルードする場合の例です。 // "m.h" class M {

  • 1