C++

思い込み再び

C++

テンプレートパターンが、なぜか、C++ではできないんじゃないかと思ってみたりしてた俺。 具体例でいくと、 class Hoge{ public: int f(int x){return g(x);} virtual int g(int x)=0; }class Foo :public Hoge{ public: int g(int x){return x*x;} }main(){…

メンバ

hmxのコードを見てて不思議に思ったこと。 まず、クラスのメンバの名前の語尾に必ず'_'が付いてる。 これは多分、他の変数と区別するためだと思うからちょっと真似してみよう。 あと、デストラクタが仮想関数になってること。 デストラクタなんか全然書いて…

C++

constなオブジェクトに対して、そのオブジェクトの非constなメンバ関数を呼び出す。 これは警告がでるだけでコンパイルは通ったりした・・・。 class Hoge{ int x; public: Hoge(int i){x = i;} void add(){x=x+1;} }; main(){ const Hoge hoge(1); hoge.add();…

初心者であるが故のちょっとした、けどタチの悪いつまずき。 ベースクラスの初期化のタイミング class Hoge : public Foo{ Hoge(int x):Foo(x){} } vectorはstd::vectorです。 教えてくれた人すごくありがとう。 ずっと悩んでるとあとでものすごくショックを…

ずっと勘違いしてたこと。

C++

privateな関数 = 同じクラス内からのみ呼び出せるメンバ関数。 てのは、誰でも知ってる当たり前のこと。 けど、なぜか自分は、言葉としてはちゃんと理解しつつも、実は頭の中では、 同じオブジェクト内からのみ呼び出せるメンバ関数。 だと思ってた。 つまり…

型変換

C++

というわけで、C++は型変換を勝手にやってくれる素敵な言語ですよっと。型変換 explicitではない、引数を1つだけとるコンストラクタ、またはoperator type-name()という形の型変換演算子で定義される。型変換演算子はメンバ。2つのクラスがお互いへの型変換…