C++でJavaやC#のようにnewを書く方法
タイトルからするとなにを言っているのか分からないかもしれませんが、newの見栄えをJavaやC#と同じようにする方法です。
例えばJavaやC#でHogeというクラスをnewするときは以下のように書きます。
Hoge hoge = new Hoge();
普通にC++でnewするときは以下のように書きますね。
Hoge* hoge = new Hoge();
C++の場合はポインタを表す間接演算子が付いていますがJavaやC#と同様の書き方をするためにそれをはずすことを考えます。
C++でHoge hoge = ...と宣言と同時に代入を行うと、実際には代入ではなくコンストラクタが働いています。
Hoge hoge = a; // 下と同じ
Hoge hoge(a);
これを利用してnew Hogeを受け取れるコンストラクタを作ります。
class Hoge { public: Hoge(){} Hoge(Hoge* hoge){} // Hoge*を受け取るコンストラクタ void method(){} };
これでC++でもJavaやC#のようにnewを書くことができます。
Hoge hoge = new Hoge(); hoge.method(); // ポインタっぽいのにドットでメンバ関数を呼び出して気持ち悪い