タグ

C++とpointerに関するastk_fのブックマーク (5)

  • 素晴らしいSwiftのポインタ型の解説 - Qiita

    導入 Swiftにはポインタを表すための型として UnsafePointer<T> とその仲間達があります。CoreFoundationなどC言語のライブラリを使う時などに利用することになります。これらのポインタ型のAPIはとてもよく考えられた素晴らしいものです。この記事ではそれを紹介、解説します。C言語ユーザ、C++ユーザにとっても興味深い内容だと思います。(swift 3.0.2) ポインタ型 ポインタ型には下記のものがあります。 基ポインタ型 UnsafePointer<T> UnsafeMutablePointer<T> UnsafeRawPointer UnsafeMutableRawPointer UnsafeBufferPointer<T> UnsafeMutableBufferPointer<T> UnsafeRawBufferPointer UnsafeMutableR

    素晴らしいSwiftのポインタ型の解説 - Qiita
  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
  • 動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary

    boost::shared_ptr は動的削除子 (dynamic deleter) と呼ばれる技法に基づいて実装されています.この動的削除子という技法で重要なのは, boost::shared_ptr が最終的に呼び出す解放処理が boost::shared_ptr のテンプレート引数の型に関係なく,コンストラクタに実際に渡されたポインタの型で,かつ boost::shared_ptr のコンストラクタの呼び出しの段階で 決定する,ということです. 以下のようなコードが,動的削除子の効果が一番分かりやすい例になるでしょう. class X{ public: ~X() { std::cout << "X::~X" << std::endl; } }; class B{ public: ~B() // virtual でないことに注意!! { std::cout << "B::~B" <<

    動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary
  • 技術的雑談-ポインタ変数の前constと後constの違い - Tsubasa's HomePage

    C++で変数が不変である事を宣言するconstというものがありますが、良く見ると2通りの書き方があることがわかります。 そして、それによって効能が変わってきます。 ここでは「Hoge」はclass名だとします。仮に下記のようなヘッダーを持つとします。 class Hoge { public: // コンストラクタ Hoge(std::string& rName); // デストラクタ ~Hoge(); // オブジェクトの状態を変更しないメソッド void methodA() const; // オブジェクトの状態を変更するかもしれないメソッド void methodB(); private: 〜省略〜 } クラス名の前にconst const Hoge* pPointer; これは「pPointerが指すオブジェクトHogeが不変である、不変でなくてはならない」という意味になります。 実

  • unique_ptr で今風な C++ コードを書こう!! - @nojima's blog

    はじめに お久しぶりです。KMC OB の id:nojima です。 この記事は KMC Advent Calendar 2014 の10日目の記事です。 昨日は id:murata さんの「受験生応援!Javascriptでひねくれ数列」 でした。 今日は C++ の unique_ptr の話です。 (最初は rvalue について書こうと思っていたのですが、書いてみると unique_ptr だらけになったのでタイトルを変えました。なので、KMC Advent Calendar 2014 に書いてあるタイトルとはい違っています。すみません) 個人的には C++03 ではなく C++11 を使う最大の理由は unique_ptr の存在だと思っています。 例外発生時にももれなく delete してくれる。 生ポインタとパフォーマンスが同じ。(最適化されている場合) 所有権を型として

    unique_ptr で今風な C++ コードを書こう!! - @nojima's blog
  • 1