BLで学ぶ左辺値と右辺値
左辺値は受け
右辺値は攻め
uke = "seme";
uke // 左辺値(受け)
"seme" // 右辺値(攻め)
右側だけど攻め。
BLで学ぶプログラミング言語の属性
Javaはエリートサラリーマン
JavaScriptはヤンチャ系の後輩
Rubyは年下小悪魔系
Lispは孤独な一匹狼
Smalltalkは純真な学者タイプ
C言語はオヤジ上司
C++はいけ好かないライバル
Lispは近寄りがたいが意外と天然。Smalltalkは意外と子供好きなところがある。Rubyはパパっ子で甘え上手だがワガママで腹黒いところがある。C++は取引先の課長。オヤジ上司の元後輩でお互いに仲は悪いが自分を庇ってくれた元上司に恩を感じ続けている。オヤジ上司から未だに後輩扱いされているのが悩み。
BLで学ぶポインタ
ポインタ変数は受け
アドレス参照は攻め
間接参照は攻めときどき受け
int seme = 9;
int* uke = NULL; // ポインタ変数は受け
uke = &seme; // アドレス参照は攻め
seme = *uke; // 間接参照は攻め
*uke = seme; // ときどき受け(攻めのち受け)
リバもいけます。
BLで学ぶ参照の種類
左辺値参照は総受け
右辺値参照は誘い受け
const参照は強気受け
ポインタはオヤジ受け
int v = 9;
int& sou_uke = v; // 左辺値参照は総受け
[](int&& sasoi_uke) { // 右辺値参照は誘い受け
[](const int& tsuyoki_uke) { // const参照は強気受け
const int* oyaji_uke = &tsuyoki_uke; // ポインタはオヤジ受け
printf("%d", *oyaji_uke);
}(std::forward<int>(sasoi_uke));
}(std::move(sou_uke));
なんで俺こんなにBL詳しいんだよ。