「C++」の版間の差分
提供:senooken JP Wiki
(New) |
(class) |
||
1行目: | 1行目: | ||
== explicit == | == explicit == | ||
4行目: | 6行目: | ||
explicitがあるとコピーコンストラクター (=代入) が禁止される。意図しない型変換などを抑止するらしい。 | explicitがあるとコピーコンストラクター (=代入) が禁止される。意図しない型変換などを抑止するらしい。 | ||
== std::make_unique == | |||
情報源: [https://ja.stackoverflow.com/questions/24876/make-unique%e3%81%ae%e5%88%a9%e7%82%b9 c++ - make_uniqueの利点 - スタック・オーバーフロー]。 | |||
unique_ptr生成時に使う。newするよりいい。処理が1回で済む。 | |||
== class == | |||
=== interface === | |||
情報源: [https://marycore.jp/prog/cpp/interface-class-and-duck-typing/ C++ インターフェースの実現方法【インタフェースクラスとダックタイピング】 | MaryCore]。 | |||
C++でJavaなどのinterface (関数、staticのみの派生用クラス) 相当の実現には若干工夫が必要となる。 | |||
* 全ての関数が純粋仮想関数: virtual function() = 0 | |||
* 仮想デストラクター: virtual ~destructior() | |||
virtualは関数にオーバーライドを許可する。 | |||
仮想デストラクターがあることで、派生先側でのデストラクター呼び出しを許容する。 | |||
=== abstract === | |||
情報源: | |||
* [https://kaworu.jpn.org/cpp/%E6%8A%BD%E8%B1%A1%E3%82%AF%E3%83%A9%E3%82%B9 抽象クラス - C++入門] | |||
* [https://stackoverflow.com/questions/40075486/can-a-non-virtual-function-be-equal-to-0 c++ - Can a non-virtual function be equal to 0? - Stack Overflow] | |||
* [https://programming.pc-note.net/cpp/abstract.html 抽象クラス(C++) - 超初心者向けプログラミング入門] | |||
抽象クラス。純粋仮想関数が1個以上存在するクラス。 | |||
ベースクラスにvirtual function() = 0;がある場合、派生クラスではvirtualは別になくてもいい。 | |||
function() = 0; で同じ意味になる。 | |||
純粋仮想関数が存在する場合、継承必須になり、そのクラスはインスタンスを生成できない。 |
2023年11月28日 (火) 13:45時点における版
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
情報源:
- 抽象クラス - C++入門
- c++ - Can a non-virtual function be equal to 0? - Stack Overflow
- 抽象クラス(C++) - 超初心者向けプログラミング入門
抽象クラス。純粋仮想関数が1個以上存在するクラス。
ベースクラスにvirtual function() = 0;がある場合、派生クラスではvirtualは別になくてもいい。
function() = 0; で同じ意味になる。
純粋仮想関数が存在する場合、継承必須になり、そのクラスはインスタンスを生成できない。