社員のつぶやき

125です。

これまで、しばらくの間、業務で得た知識の一部であり、C++をはじめとする技術的な話を継続してきましたが、本日でしばしのお別れとなります。

読んでくれた人、ありがとうございました。

Hyper-Vで作ったCentOS8の開発環境をWSL2で再現してみました。

開発用のCentOSのイメージが見つからなかったので、必要となるパッケージの特定に時間がかかって、構築は面倒でした。

WSL2では仮想マシンのコントロールがないので、動作がよく分かりません。メモリやハードディスクなど。topやvmstatなど内部からのモニタリングしかできない感じです。限界に近いところではどうなるんだろう?という疑問は残ります。

ただグラフィックスがない分、すんなり動作しているようには思います。CUIだけで良ければ、WSL2もありかな?と思います。

 

※WSLではまだ動かないモノもあるので、そのあたりは自己責任で調べてください。

次のような形式で、"\n\"\t"などの文字列のエスケープシーケンスを実施しない。

std::string s = R"("ABC"

"XYZ")";

 

これ以上継承できないようにガードする機能です。Javaに似た機能があるので、説明不要でしょう。

 

class クラス名 final : public ベースクラス名 { ... }

class クラス名 : public ベースクラス名 {

virtual void func() final;

...

}

という感じですね。

コンセプトは、採用するテンプレートに対して、必要なメソッドを制約することができる。Javaのインターフェースに近い機能となる。

ヘッダー<concepts>には、型の関係や種類をチェックするための機構が用意されている。

pairやtupleの要素を直接分解できる。ほかのプログラミング言語での多重代入などの機能に等しい。

 

こんな書き方ができるようになる。

std::pair<int, std::string> p = {1, "hello"};

auto [id, message] = p;

関数定義の頭にconstevalとつけるだけで、コンパイル時に評価される関数となる。コンパイル時に評価できないと、エラーとなる。

コンパイル時に評価されて、実行時には使わないので、実行時に呼び出すことはできない。関数実体がないので、関数アドレスを取り出すことはできない。

*thisの状態に応じて、呼び出すメンバ関数を分けることができる機能。

おもに一時オブジェクトを作成した後に呼び出すメンバ関数で処理を変更したいときに使うかな?

三方比較演算子<=>が導入されます。

一般には、これを定義すれば、ほかの比較演算子は記述する必要がなくなります。std::rel_ops、お疲れ様。

2021年新年一発目は、OOPも学べて、OODも学べて、TDDも学べて、Smalltalkも学べて、英語も学べる本を紹介します。

 

http://books.pharo.org/learning-oop/

1  2  3  4  5  6