C/C++関連

昔からある言語。しかし未だに処理速度を出そうと思えば、この言語が挙げられる。 個人的にはC++はCに後付けでそのときの流行りみたいなのをどんどん追加して複雑化した結果なイメージ。




環境構築


Linux(debian系)でC/C++の環境を構築する場合、

$ sudo apt install -y g++

Linux(RHEL系)でC/C++の環境を構築する場合、

$ sudo dnf install -y gcc-c++

MacOSでC/C++の環境を構築する場合、

$ xcode-select --install
brew install gcc

構築後以下のコマンドで、インストールされたことを確認する。

$ g++ --version

ライブラリ

ここに個人的によく使うライブラリを挙げる。

用語・C++でよく使う考え方


C++をネットで調べていると、よく難しい言葉が出てくるのでメモ書き程度に書いておく。

  • 変数: 数学の変数とは違い、数値・文字などの一時的な置き場
  • ポインタ: 上記の変数の場所を示すアドレス番号
  • メソッド(関数): 数学の関数と似て非なるもの、何か変数(数字とか文字とか)を入れると結果(数字とか文字とか)が返ってきたり、投げっぱなしで終わったりする
  • 引数: 上記のメソッドで材料となる変数たちのこと
  • 返り値: メソッドを実行したときに返ってくるもの
  • 値渡し: メソッドの引数に、変数を突っ込んだときに変数の中身をコピーしてメソッドで処理されること。普通に書くとこれになる。メソッドを実行しても元の変数は変わらない。
  • 参照渡し(ポインタ渡し): メソッドの引数に、変数を突っ込んだときにその変数のアドレスが渡される。&とか、*を変数名の前に書く。メソッド内でその変数を書き換える操作があった場合、メソッドの実行後元の変数は書き換わる。
  • クラス: 上記の変数、メソッドをひとまとめにしたセットである一連の流れを一つにまとめて置きたいときに使う
  • インスタンス: 実体とも言う。クラスはイメージとしては設計図のようなものでそれをもとに作った実物のこと
  • コンストラクタ: 上記のインスタンスが完成したときに一番最初に実行されるメソッド。初期化処理
  • デストラクタ: コンストラクタの逆。インスタンスをdeleteしたときに捨て去る前に行う処理。
  • クラス継承: すでにある同じようなクラスの構造を持ったものを書きたいときに、そのクラスを引き継ぐことである程度使いまわしができる。
  • オーバーロード: 同じ名前の異なる引数を持つメソッドを作ること。変数の種類によって呼び出されるメソッドを変えるようにできる。
  • オーバーライド: クラス継承をして、元々あったメソッドを上書きすること。ただし普通のメソッドはできない。
  • 仮想関数: 上記のオーバーライドができるメソッド。virtualを頭につける。
  • 純粋仮想関数: 引数と返り値だけ定義するメソッド。オーバーライドすること前提にしているので実際の処理内容は継承した先でのみ書ける。継承先で処理内容を書かないと下記の抽象クラスになってしまう。
  • 抽象クラス: 上記の継承を行うことを前提にして作った基本となるクラス。純粋仮想関数があるクラス。インスタンスが作れない。
  • テンプレート: 変数の種類で毎回オーバーロードさせるのが面倒になった場合、変数の種類を判定して自動で返り値を出せるようにすること。