備忘録

政治/経済/自動運転/Python/Robotics

C++

テンプレートについて

C++

テンプレート=再利用可能なプログラムコードの作成をサポート template <class X>又はtemplate <typename X>キーワードを使用する。 汎用クラスのインスタンスの作成は次のようにする。 class-name <type> ob;</type></typename></class>

仮想関数

C++

実行時ポリモーフィズムをサポートする。 関数オーバーロードに対して、仮想関数の再定義をオーバーライドと呼ぶ。 (0)派生クラスへのポインタ 基本クラスのポインタとして宣言されたポインタは、派生したどのクラスを指し示すのにも使用できる アクセスでき…

継承

C++

(0)構文 class derived-class-name : access base-class-name { public: derived-class-name (arg-list) : base-class-name (arg-list) { } } (1)被保護(protected)メンバ =基本クラスの被保護メンバには、その派生クラスからもアクセスできる privateとし…

演算子オーバーロード

C++

メンバ演算子 return-type class-name::operator#(arg-list){ } 注意 演算子の優先順序を変更できない 演算子が受け取るオペランドの個数を変えられない =を除くすべての演算子関数を継承する 継承した演算子を、自分自身に関連付けて自由にオーバーロード…

オーバーロード関数のアドレスの探し方

C++

オーバーロード関数のアドレスを関数ポインタに代入する際には、どの関数のアドレスを代入するかは、ポインタの宣言によって決まる。

参照について

C++

参照の用途 参照渡し 参照の返し (参照先のオブジェクトがローカルとかじゃないことに注意) 独立参照 (まず使わないらしい) 制限 ほかの参照を参照できない 参照のアドレスは取得できない 参照の配列は作成できない ビットフィールドを参照できない

newとdeleteの文法

C++

配列のときだけちょっと特殊なので注意。 p-var = new type; p-var = new type (initial-value); p-var = new type [size]; delete p-var; delete [] p-var; *動的に割り当てた配列は初期化できない

オブジェクトの配列

C++

(1)オブジェクトの配列の初期化の仕方について 基本形:sam ob[2] = { samp(1), samp(2)} 省略形:sam ob[2] = {1, 2} *コンストラクタが引数を複数とる場合は省略形は使えない (2)コンストラクタのオーバーロード 動的配列の初期化はできないために、クラ…

フレンド関数について

C++

関数をあるクラスのメンバにすることなく、privateメンバにアクセスできる。 用途 演算子のオーバーロード ある種の入出力関数の作成 1つの関数から別々のクラスのメンバにアクセス 使い方 宣言時にfriendキーワードをつける 引数としてオブジェクトを渡す…

インライン関数

C++

復習しないとほんと忘れてる。ひどい。 関数定義の頭にinlineキーワードをつけることでインライン化できる。 <メリット> 関数呼び出しのオーバーヘッドを防ぐことで実行速度高速化 <デメリット> コード肥大化 <注意> 必ずしもインライン展開されない …

C++の共用体 その2

C++

C++には無名共用体というものがある。 型名がない 変数を宣言できない コンパイラに対して、メンバが同じメモリ位置を共有するように伝える ドット演算子を使用せずに、メンバに直接アクセスできる グローバル無名共用体は、staticとして宣言しなければなら…

C++の共用体 その1

C++

private指定でprivateメンバ関数を作成できる。 すべてのデータが同じメモリ位置を共有するクラス型を作成できる点で有意義。 <注意事項> ほかのクラスを継承することができない 基本クラスとしても使用できない staticメンバを持てない コンストラクタや…