C++ 初期化子 書いて覚えるための初心者自己中記事
面白いC++のテキストを見ています。
double d1 = 2.3; double d2(2.3); double d3{ 2.3 };//これでも出来る std::vector<int> v = { 1,2,3, }; std::vector<int> v2{ 1,2,3, };//これでも出来る int i1 = 7.2;//警告(切り捨てられる) int i2 = { 7.2 };//エラー int i3{ 7.2 };//エラー //波カッコ{}で初期化を統一すると楽(=がいらない) //型を間違えても波カッコならエラーになってくれる
波カッコ最強。
って思って次のページ見たらauto使いましょう!って出てた。
class testclass { public: testclass(int i, double d) :i{ i }, d{ d } {};//波カッコ最強 void Show() {std::cout << i << " : " << d << " : " << this << std::endl;} private: int i; double d; }; int main() { auto d1 = 2.3; auto d2(2.3); auto d3 = { 2.3 }; auto d4{ 2.3 }; std::vector<int> v1 = { 1,2,3, }; std::vector<int> v2{ 1,2,3, }; auto v3{ v2 };//出来る testclass test{ 1,2.2 }; auto c_test{ test };//出来る test.Show(); c_test.Show(); std::cout << &test << std::endl; std::cout << &c_test << std::endl; system("pause"); }
//output
1 : 2.2 : 00B3FB54
1 : 2.2 : 00B3FB3C
00B3FB54
00B3FB3C
auto凄いなぁ。クラステンプレートのオブジェクトもautoと波カッコで複製出来た。
テスト用のクラスも同じでautoと波カッコで複製出来た。引数付きのコンストラクタ用意してたんだけど複製で引数入れてなかった。
でも複製元で入ってたのがそのまま入ってる。
オブジェクトのアドレス一応確認したけど、別々だ。
なんか、autoの場合は = を使ったほうがいいって書いてある。
なんだよ・・。
あぁ、今日はWindowsのDirect2Dでコテンパンにされたけど、癒される~
ここまで~。