C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

C++

C++ 強制終了 書いて覚えるための初心者自己中記事

使うもの abort() exit() abort() はいきなり打ち切る exit() は終了処理がある class Hoge{ public: virtual ~Hoge() { cout << "Hoge::~Hoge" << endl; system("pause"); } }; Hoge hoge; int main() { int n; cin >> n; if (cin.fail()) { abort(); } els…

C++ コマンドライン引数 書いて覚えるための初心者自己中記事

プログラムの始まりに情報を受け入れる。 プログラムを実行するときに情報を渡す。 視点が違うけど、この情報は常に文字列で渡される。 これをコマンドライン引数と呼ぶ。 現在居るディレクトリをカレントディレクトリと呼ぶ。 cd カレントディレクトリを変…

C++ main関数とスタートアップルーチン 書いて覚えるための初心者自己中記事

プログラムはmain関数が最初に呼び出される main関数の戻り値は必要なのか? main関数を呼び出しているのは誰か? main関数はスタートアップルーチンが呼び出している。 main関数の戻り値はスタートアップルーチンが求めている。 main関数が最初に呼び出され…

C++ 可変個引数 書いて覚えるための初心者自己中記事

printf や sprintf などは引数を大量に入れても問題なく動く。 今までの関数の作り方だと無理。 どうやっているのか。という話。 まず、仮引数のところで ... と書けば可変個引数になる。 可変個引数はそのまんまの意味。 int Sum(int first, ...) { int sum…

C++ 組み込みマクロ 書いて覚えるための初心者自己中記事

いままでマクロは #define で定義していた。 組み込みマクロといって標準の定義済みマクロなるものがある。 cout << __FILE__ << endl;//ファイル名 cout << __LINE__ << endl;//行番号 cout << __DATE__ << endl;//コンパイルした日 cout << __TIME__ << en…

C++ #if 書いて覚えるための初心者自己中記事

コンパイルするかしないかを制御する。というお話。 if (array == NULL) { throw invalid_argument("Average に変な引数が渡されました"); } 仮に、プログラムのどこかでエラー判定があったとして。 デバッグ中はこのままで、その後は必要ない。 という場合…

C++ voidへポインタ 書いて覚えるための初心者自己中記事

void 型(?)のポインタにいろいろな型のアドレスを代入してみる。 int main() { char c = '1'; int i = 2; double d = 3; void* p; p = &c;//ここでエラーにはなってない cout << *p << ' ';//ここでエラー p = &i; cout << *p << ' '; p = &d; cout << *p <<…

C++ 定義未定義未規定 書いて覚えるための初心者自己中記事

・処理系定義の動作 処理系(コンパイラ)によって定義される存在 コンパイラや環境が同じ場合に同じ結果をもたらす事が保証されている。 テキストにもよく出てきたりする int型 のバイト数を出してみましょう、で、環境によって違います。とかのあれ。 ・未…

C++ ショートサーキット 書いて覚えるための初心者自己中記事

条件式の真偽判定は必ず最後まで行われるというわけでは無い。 if (1 == 2 && 3 == 4) { ... }; この条件部分では最初の 第一条件 1 == 2 は false で、次の && <- この時点でもはや true にはならないと分かる。 3 == 4 <- ここを見るまでもない 結果 false…

C++ 関数ポインタ関係 書いて覚えるための初心者自己中記事

関数のアドレスは取得できる そして関数のアドレスを入れられる変数もある。 らしい。 関数のアドレスが取得できるという話は以前の勉強でやった覚えがある。 nenechi.hatenablog.com コレの中で、 ~~~~~~~~~~~~~~~~~~~~~~~ this とは Franction& operator *…

C++ クラステンプレートについて 書いて覚えるための初心者自己中記事

その前に typename ってなんだ? と思って確認した。 ~~~~~~~~~ 不明な識別子が型であることをコンパイラに通知します。 ~~~~~~~~~ 納得。 基本的なことをわかってなかったから理解するのが難しくなってしまう。 型ごとに定義を変更したクラステンプレートの…

C++ テンプレート引数について 書いて覚えるための初心者自己中記事

クラステンプレートの引数にクラステンプレートを。 の勉強。 まず以前勉強したクラステンプレートの記事↓ nenechi.hatenablog.com まずクラステンプレートで標準ライブラリにある、vectorについて。 vector クラステンプレートは配列に強いクラステンプレー…

C++ using  書いて覚えるための初心者自己中記事

nenechi.hatenablog.com この記事で勉強したusing をもっと勉強するらしい。 まずこれを、 #include <iostream> namespace Hoge { using namespace std; } int main() { Hoge::cout << "hello" << Hoge::endl; system("pause"); } 見たことない書き方。 新しい出会い。</iostream>…

C++ フレンド friend 不完全型 書いて覚えるための初心者自己中記事

nenechi.hatenablog.com この記事で一度勉強したfriend についてさらに勉強 過去の勉強では ~~~~~ friend オーバーロードの実装はクラス外で行うが 宣言部分はクラス内で行う。 その際宣言部の先頭に friend を記述する。 そうすると演算子オーバーロー…

C++ typeidf演算子 type_infoクラス ダウンキャスト クロスキャスト  書いて覚えるための初心者自己中記事

typeid 演算子を使うと型の情報をGETできる。 使い方は typeid ( 値 or 型 ) 返り値は type_infoクラスのconst参照です。 type_infoクラスは #include <typeinfo> が必要です。 このクラスのメンバ関数に name というのがあって 型情報をconst char* で返してくれる。 </typeinfo>…

C++ 多重継承 書いて覚えるための初心者自己中記事

多重継承とは 二つ以上のクラスを継承すること [ class A ] [ class B ] ↑ ↑ [ class C ] こんな感じ。 実際にやる。 class ABase {//基底クラス① public: virtual ~ABase() {} virtual void AHoge() = 0; }; class BBase {//基底クラス② public: virtual ~B…

C++ CodeIQ カウント・スリー問題

codeiq.jp これなんだけど、自分でコード書いてページ遷移すると6個のテストケースごとに判定してくれて全問正解だと合格なんだが、 1~6まででどんどん桁が増えていく問題で、小さい桁も大きい桁も問題なく正解しているのに3桁の問題が不合格になる。 …

C++ マクロ 書いて覚えるための初心者自己中記事

マクロについて マクロは #include に似ている #include は別ファイルを差し込む マクロはテキストを指定した場所に差し込む 差し込んでからコンパイル #define FIVE_TIMES for(int i_ = 0 ; i_ < 5 ; ++i_) //これがマクロ int main() { FIVE_TIMES { //こ…

C++ シノニム typedef 書いて覚えるための初心者自己中記事

シノニム (同義語) 処理を書くときに型を何にするか確定できていない場合に typedef で設定した仮の名前を使い、最後にまとめて設定する事が出来る。 typedef int ValueType; ValueType m_a, m_b; //今はint型 ValueType m_result; //今はint型 typedef do…

C++ インライン関数 書いて覚えるための初心者自己中記事

値を入れるだけ、取得するだけなどの簡単な関数に対して、 呼び出す時間がもったいないので呼び出す時間を無視する方法があるらしい。 それがインライン関数だそうだ。 インライン関数の作り方は関数の頭に(頭じゃなくてもいいけど普通はそうするらしい) i…

C++ ビット演算 書いて覚えるための初心者自己中記事

二進数の演算にはビット演算というものがある 五種類あって AND 論理積 OR 論理和 XOR 排他的論理和 NOT 論理否定 ビットシフト これらは演算子オーバーロードされない限り整数しか扱えない。 ANDの演算子は & 二項演算子だ。 0011 &)0101 ーーーー…

C++ 参照を返す関数と演算子オーバーロード 書いて覚えるための初心者自己中記事

参照を返すメンバ関数を作れば、アクセス指定子がprivate な変数でも それを参照している状態が返されるので数値を入れられる。 class Array { public: Array(int index); virtual ~Array(); int& At(int index); //参照を返す void Show(int index); privat…

C++ テンポラリオブジェクト 書いて覚えるための初心者自己中記事

str = string("hoge"); この状況について。 stringクラスのオブジェクトを作って"hoge"で初期化している。 ただし、一時的に。 このように一時的に作られたオブジェクトのことを テンポラリオブジェクト という。 上記の場合は文字列を引数にとるコンストラ…

C++ 静的メンバ変数 静的メンバ関数 static 書いて覚えるための初心者自己中記事

static を使った静的ローカル変数は、 関数を抜けても値が保持される 初期化は一度きり だった。 nenechi.hatenablog.com クラスのメンバ変数にstatic をつけると 静的メンバ変数になる。 静的メンバ変数は実体がなくなる。(?)(コンパイル時にリンクエラ…

C++ エラー処理 例外 書いて覚えるための初心者自己中記事

エラー処理 goto 分 goto ラベル ; で ラベル : にジャンプする。 int main() { const char* error; string line; ifstream file; file.open("test.txt"); if (!file.is_open()) { error = "ファイルを開けませんでした。" ; goto ON_ERROR;//goto ラベル; …

C++ ちょっと今作れるものを作ってお勉強① 書いて覚える初心者自己中記事

コマンドでひたすら敵と戦ってレベル上げていく不毛のゲームができた。 Source.cpp void main() { srand((unsigned)time(NULL)); Status player; player.LevelUp(1); while (player.Battle(player)) { //何もしない }; system("pause"); }

C++ テンプレート 書いて覚えるための初心者自己中記事

関数テンプレートは扱う型が違うけど処理部分は同じ記述の関数をまとめるためのもの。 // 扱う型は違うが中の処理は同じ記述の関数 int Abs(int a) { return a < 0 ? -a : a; } double Abs(double a) { return a < 0 ? -a : a; } これまでは関数オーバーロー…

C++ 名前空間 書いて覚えるための初心者自己中記事

クラス・関数・変数などの名前のことを総称して識別子(identifier)という。 複数人でプログラムを作成していて、自分が使っている識別子が誰かと被った場合などの対処として名前空間なるものがある。 前から名前空間という言葉だけは聞いたことがあって、い…

C++ streamクラスについて 書いて覚えるための初心者自己中記事

今まで使用していた iostream やら fstream やらはクラスの継承によって派生しているものらしい。 stream とは入出力に関してのクラスで、基底クラスでは istream <-inpot用 ostream <-output用 が存在する。 そこからの派生クラスとして iostream <- inpou …

C++ ファイル操作 書いて覚えるための初心者自己中記事②

nenechi.hatenablog.com の続き。 binary.txt ファイルにあらかじめ Hello My name is robot と入れてあります。 そのファイルを読んで値を16進数で16桁づつ表示する。 ------------------------------------------------ const int WIDTH = 16; int main(){…