タグ

参照に関するyowanoのブックマーク (4)

  • 参照渡し or 値渡し? - yohhoyの日記

    C++03/11における関数の引数型とコピー/ムーブ処理コストとの関係について。 記事の内容は C++Now 2012 Keynote: "Moving Forward with C++11" スライド資料(Part I, Part II) に基づく。(Part IIのpp.22-57) 型Tに対する変更操作を行う関数において、引数の型をconst参照渡し(const T&)*1または値渡し(T)とするどちらが “良い” デザインかという話。ここでは関数呼び出しから値を返すまでに生じるコピーコンストラクタ/ムーブコンストラクタの呼び出し回数によって評価する。つまり、回数が少ない方が低コスト=良いデザインという観点にたつ。 // const参照渡し; pass-by-const-reference T modify1(const T& x) { T tmp(x); tmp.modify()

    参照渡し or 値渡し? - yohhoyの日記
    yowano
    yowano 2014/05/14
    型Tに対する変更操作を行う関数において、引数の型をconst参照渡しにする場合、値渡しにする場合、const参照渡しと右辺値参照渡しの二種類を準備する場合、それぞれの挙動のまとめ。
  • 弱い参照 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "弱い参照" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2011年10月) 弱い参照(英: weak reference、ウィークリファレンス)あるいは弱参照とは、参照先のオブジェクトをガベージコレクタから守ることのできない参照のことである。弱い参照からのみによって参照されるオブジェクトは到達不可能とみなされ、従っていつでも解放することができる。弱い参照は、通常の参照(強い参照、強参照)による諸問題を解決するために用いられる。PythonJavaをはじめとするガベージコレクタを実装したオブジェクト指向プログラミング言語の多くは、弱い参

    yowano
    yowano 2013/08/29
    弱参照からのみによって参照されるオブジェクトは、ガーベジコレクションによっていつでも解放される。循環参照の問題を解決できるほか、オブジェクトがさほど重要ではないということを示すことにも使える。
  • 参照とポインタ

    この文章はプログラマでもプログラミング言語の専門家でもないただのプログラミング好きの私が適当に書きつづったものです。よってこの文章には正しい箇所もあるでしょうが、間違っている箇所もかなりあるはずです。ご指摘いただけたらと思います。また、この文章を読んでも内容を鵜呑みにしないでください。鵜呑みにした結果何か起きても知りません。 "諸悪の根元"-ポインタ Cの特徴の1つとして、また初心者が必ずつまずく(*)とされる難所としてポインタがあげられるわけだが、ポインタはどうも最新流行のプログラミング手法の中では諸悪の根元として忌み嫌われているようだ。 (*) 自慢するわけではないのだが、私は別にポインタでつまずいた記憶はない。もちろん、効果的な使い方などはその後いろいろなコードを読んでいく中で身に付いていったわけだが。 ポインタは確かに諸刃の剣である。非常に便利な反面、危険でもある。例えば次のような

    yowano
    yowano 2013/06/02
    ポインタと参照の使い分けについて。
  • C/C++ - 言語仕様編 第7回 ~インスタンスとオブジェクト~

    変数の宣言と定数変数型 C++において、変数の宣言は、スコープ内のいたるところで可能となる。 あるT型変数、またはリテラル t1 があるとき、 T const t=t1; のように、型名の後に const をつけると、tは、値としてt1を持ち、かつ、書き換えが出来ない変数となる。これをT型定数変数と呼ぶ。 ここで、tを const T t=t1; と初期化しても、tは、T型定数変数として機能する。このことから、tは、const T型変数であると してもよい。 C++において、定数変数は、それ自身が、リテラルとして機能することが許されるため、 たとえば、配列の要素数として、 int arr[t]={0}; などとして、t個の連続する0からなる配列を構築することが許される。 あるP型ポインタ変数、または、変数のポインタ p に対して、 P* const p1=p; P const* p2=p;

  • 1