【C++】C++の基本的な言語機能①

約二週間ぶりとなるが、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が出てこなかった。



この記事が気に入ったらサポートをしてみませんか?