タグ

2010年5月19日のブックマーク (6件)

  • C++ と組み込み環境 | 一時オブジェクトの参照

    2006-01-30 επιστημη氏主宰のメーリングリストcppllでも一週間ほど前に一時オブジェクトの生存期間に関する話題が上がっていたので、こちらでもご紹介します。少し変更を加えてありますが、まずは下記のサンプルコードをご覧ください。 #include <iostream> class A { int a_; public: explicit A(int a) : a_(a) { std::cout << "construct - " << a_ << std::endl; } ~A() { std::cout << "destruct - " << a_ << std::endl; } }; const A& foo(const A& a) { return a; } const A& bar() { return A(3); } int main() { const A& a1

  • Return value and constructor

    戻値とコンストラクタの妖しい関係 C++ では、関数の引数として、ユーザが定義したクラスのオブジェクトが 必要な場合は、たいてい、リファレンスを使う。 そうしないと、引数用に一時オブジェクトが生成され、 オブェクトのコピーが発生するからである。リファレンスを使えば、 一般的にはオブジェクトのアドレスが渡されるだけなので、オブジェクト 全体をコピーするよりはるかに効率的だ。 関数引数はリファレンスで渡すというのは、まあ、常識の部類であろう。 では、関数からの戻値としてオブジェクトを返す必要がある場合はどうだろうか。 オブジェクトが保持している属性値を返すようなときは、 const 修飾子を付けた上で、リファレンスで返すのが普通だろう。 その属性値を含むオブジェクト自身を呼び出し側が保持しているので、 アドレスだけ返しても特に問題はないからだ。 では、新しくオブジェクトを生成して返さなければな

  • http://www.sun-inet.or.jp/~yaneurao/intensive/cppmaniax/chap0001.html

    一時オブジェクトの寿命 1.リファレンス一時オブジェクトの寿命 ・リファレンスに対する初期設定子の一部として使われた場合、そのリファレンスと同じだけ生存する。(ARM12.2) 別の言い方をするとconst参照は一時オブジェクトを束縛する。 list-1 cppll3724 #include <iostream> #include <string> using namespace std; string createString() { return "Safe"; } int main() { const string& x = createString(); cout << "x = " << x << "\n"; return 0; }

  • C++言語 パフォーマンス - redstrange Wiki*

    何か気付いた点があれば、追記をよろしくお願いします。 参考 http://www.open-std.org/JTC1/SC22/WG21/ http://www.open-std.org/JTC1/SC22/WG21/docs/TR18015.pdf http://www.s34.co.jp/cpptechdoc/article/sizeof/index.html 参照 - reference 自前のクラスなどの場合、参照を使う方が早い 組み込みの型の場合、参照を使わない方が早い 名前空間 - namespace 名前空間が、パフォーマンスには影響を与えることはない。 メモリ的にも実行速度的にも。 ただし 関数などの識別子を短くすることの妨げになることがある メモリ上の配置が変わる可能性もある キャスト - cast C表記、C++表記いずれにしても一時的なオブジェクトが作られる可能性があ

    C++言語 パフォーマンス - redstrange Wiki*
  • STL - 自分用メモとか

    標準入出力ストリーム † C++ のiostreamと、C言語のstdio.hとを同時に使わざるを得ない場合には、 main関数の最初の部分に(実際に入出力処理を行うより前に)以下のコードを記述します。 この記述がないと、プログラムが正しく動作しない可能性があります。 次のインスタンスが、グローバル変数として(ただし、std名前空間の中にある)、あらかじめ定義されています。 cin 標準入力用のistream 定義済みインスタンス cout 標準出力用のostream 定義済みインスタンス cerr 標準エラー出力用のostream 定義済みインスタンス clog 標準ログ出力用のostream 定義済みインスタンス 入力演算子 >> , 出力演算子 << は、標準的な型についてはすべてオーバーロードされているので、 int, double, char, string 等、どの型でも

  • bleis伯爵がC++でGitを再実装すると聞いて(ガラッ

    ぐるぐる系SQL @bleis 使いたい人はソースコード落としてビルドして、GitCommands/GitExtensionsの中に出来るexeとdllとjaってフォルダをGitExtensionsのインストールフォルダに上書きして下さい 2010-05-16 13:43:39

    bleis伯爵がC++でGitを再実装すると聞いて(ガラッ