C++

提供:senooken JP Wiki
2023年11月28日 (火) 13:45時点におけるSenooken (トーク | 投稿記録)による版 (class)


explicit

情報源: c++のexplicit指定子の使い方まとめ|コウモリのちょーおんぱ

explicitがあるとコピーコンストラクター (=代入) が禁止される。意図しない型変換などを抑止するらしい。

std::make_unique

情報源: c++ - make_uniqueの利点 - スタック・オーバーフロー

unique_ptr生成時に使う。newするよりいい。処理が1回で済む。

class

interface

情報源: C++ インターフェースの実現方法【インタフェースクラスとダックタイピング】 | MaryCore

C++でJavaなどのinterface (関数、staticのみの派生用クラス) 相当の実現には若干工夫が必要となる。

  • 全ての関数が純粋仮想関数: virtual function() = 0
  • 仮想デストラクター: virtual ~destructior()

virtualは関数にオーバーライドを許可する。

仮想デストラクターがあることで、派生先側でのデストラクター呼び出しを許容する。

abstract

情報源:

抽象クラス。純粋仮想関数が1個以上存在するクラス。

ベースクラスにvirtual function() = 0;がある場合、派生クラスではvirtualは別になくてもいい。

function() = 0; で同じ意味になる。

純粋仮想関数が存在する場合、継承必須になり、そのクラスはインスタンスを生成できない。