Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

カチコミ! C++篇 @shigemk2
shigemk2 でググれ
ふだんはScalaとかシェル芸とかExcelとかSQLとか
C++知らないし、やったことないから、C++ちょっと勉強してみた あと、Scalaの会社にいるので、ちょっとScalaと比較してみる
文字列で学ぶC++入門 http://qiita.com/7shi/items/cac7b3e9b90bf91b00cc C++の絵本
C++をごにょごにょして、気づいたことなどを初心者目線で発表してみる
参照
ポインタと参照の違い
参照は、値を取り出すのにデリファレンスが必要ないポインタ 変数に別名
参照は、値を取り出すのにデリファレンスが必要ないポインタ 変数に別名
大事なことなので(ry
なんのことなのか
わからんのでちょっと逆アセンブルしてみる
g++ -O -fomit-frame-pointer -m64 -c -g param.cpp objdump -S param.o -M intel > param.o.objdump
結果
バイナリレベルでいったら、参照もポインタも一緒やったんや
実装がちゃうだけで参照はデリファレンスを省略するためのポインタの別形態ともいえる
const参照
コード
const参照は引数を書き換えられない参照 Scalaだとポインタがないからvalで代用してる 引数を書き換えられない点ではconst参照と変わらない
コンストラクタまわり
コード
C++ new int[5] →newしたらdeleteが必要 Scala new Array[Int](5) newしてもGCされる
でもファイル操作だとクローズ処理が必要になる(RAII)
参考 http://etc9.hatenablog.com/entry/20090825/1251183286
だからデストラクタが必要かどうかは状況による
実際の実装で比較してみる
複素数実装は、なんとなくHello, Worldの新提案な感じがあるので実装してみる
コード
表示まわりの実装が、場合分け多くてつらい でもパターンマッチ使うとちょっと楽かも
課題 Scalaを知るにはJVMを知らなければならない コンストラクタとデストラクタとファイナライザの違い
まとめ 他の言語だと実装しなくていいところを意識して実装しないといけないのはちょっとつらい アドレス操作がわかりにくい 実装レベルだとある程度同じことが出来るので、他言語との比較はもっと低レイヤーでやらないとダメな気がした
p
最後に
なんかマサカリください

Use a spacebar or arrow keys to navigate