約二週間ぶりとなるが、C++98の知識しかない俺のためのC++の独り勉強会。そろそろブループリントにも取り掛かりたいが、一応、C++も一通りやらなきゃならない。こないだ auto なんてステートメントも出てきたし。
参考書
前回と同じ、翔泳社の「独習C++新版」
C++17対応とされている。
この記事のタイトルは、参考書の第1章のもの。前回と違ってこの記事の目次&見出し&小見出しも参考書の項目名や節目をそのまま拝借させてもらう。
Hello, world
流石に復習する必要がない。
変数と関数
新しいC++の話はなさそう。
演算子
新しいC++の話はなさそう。
条件分岐
三項条件演算子
C++98になかったはず。
condition ? true-expression : false-expression
int absolute(int value)
{
int abs = value < 0 ? -value : value; // 絶対値にしている
return abs;
}
組み込み型とポインター
*が間接参照演算子という名前だったり、constポインターのことは俺が知らなかっただけかもしれない。constポインターはアドレスは書き換えられるけど、アドレスが指す中身は変えられないんだそうだ。一度も使った覚えがない。
キャスト演算子にstatic_castというものがあるらしい。キャストは当然知っていたが、static_castは新しいC++なんだろうか。static_cast以外は第11章の「実行時型情報とキャスト演算子」に出てくるんだそうだ。
char c = 99;
std::cout << static_cast<int>(c) << std::endl;
でも確かに<int>なんて書き方は知らなかったし、キャストされる方に括弧がつくってのも俺が知っているC++じゃない。ただ、ついこないだの【UE5】日本語文字化け その2【C++】の中に書いたStringCastの構文と同じだ。StringCast自体はC++のものじゃなくてUEによる定義だと思うが。
配列と文字列
int array[5] = { };
C++配列の初期化構文の特性を利用した技で、配列の要素を全て0で初期化したい場合に便利なんだそうだ。たぶん以前から使えたんだろうけど、知らなかった。
繰り返し
範囲for文
俺が知らない書き方。
int value[] = {-20, 10, 5, -40, 0, 10, -30};
for(int elem : value) // 範囲for文
{
if(elem < 0) { ・・・ }
if(elem == 0) { ・・・ }
}
参考書の利用例を端折ったが、こんな感じに書けるらしい。elemはvalueの配列の中身になる。
第1章は以上となる。まだautoが出てこなかった。
コメント
[…] 先程に続いて第二章。 […]