タグ

constに関するyowanoのブックマーク (8)

  • const教信者が頭の可愛そうな人たちと言われないために - 名古屋313の日記

    C++ | 12:21ローカル変数に対するconst - melpon日記 - C++すら(ryにて、厳しいご指摘をいただいたので、ここでconstを付ける意義をしっかりとまとめておきたいと思います。ただ妄信的にconstを付ける頭の可愛そうな人と思われないためには、constを付ける意義を的確に説明できとかないとというわけです。実際周りにもconst教???って人が多いので。ここではconst教の真髄であると思われる、ローカル変数、値渡しの引数、戻り値に対してconstを付けることについて触れることにします。#define代わりのconst、const参照渡し、constメンバ関数等は、const教でなくても誰もがやってくれていることだと信じているので触れません。constの意義まず、constを付ける意義としては、以下のものが挙げられるでしょう変数にある値を束縛したことの表明禁止したい

    yowano
    yowano 2014/03/05
    ローカル変数、値渡し引数へのconst付けは、無変更性の意味を付加するために必要。戻り値へのconst付けは、ムーブセマンティクスを阻害するため、演算子のオーバーロード等以外では付けない方が良い。
  • 【C++】配列の大きさとして複数ファイルで使うグローバル変数を指定する方法 - 下記のように一つのソースで定数を宣言、ヘッダ... - Yahoo!知恵袋

    C++】配列の大きさとして複数ファイルで使うグローバル変数を指定する方法 下記のように一つのソースで定数を宣言、ヘッダでextern宣言、そのヘッダを複数ファイルでincludeして定数を配列の大きさとして指定したいのですが、エラーとなってしまいます。 このような事はどのようにして実現すればよいのでしょうか? ご存じの方いらっしゃいましたらご教示頂ければさいわいです。 どうぞよろしくお願い致します。 ====================================== //*** value.c ***/ const int val = 1; //*** value.h ***/ extern const int val; //*** a.c ***/ #include value.h int A[val ];//←エラー(式には定数値が必要です) //*** b.c ***/

    【C++】配列の大きさとして複数ファイルで使うグローバル変数を指定する方法 - 下記のように一つのソースで定数を宣言、ヘッダ... - Yahoo!知恵袋
    yowano
    yowano 2013/10/31
    “const int”だと、コンパイラは定数扱いする。変数の実体は作成されない。‘const’を付けると自動的に‘static’宣言もされたことになり、ファイルを超えるグローバル変数は扱いはされない。
  • メンバ関数の戻り値型後置とconst修飾 - pandaman64の日記

    yowano
    yowano 2013/10/25
    template<typename T> auto good(T &&value) const /*ここ*/ ->decltype(value) /*ここじゃない*/{ return value; }
  • 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;

  • C++ と const 参照 - NyaRuRuが地球にいたころ

    数年前,まだ私が C++ゲームを書いていたころ,深すぎる関数のネストは「一旦変数に入れ」て「読みやすくする」というコーディングスタイルにだいたい落ち着いていた.もちろん,「これは一旦別名を付けるだけで,変数に再代入する気はないよ」ということで const も付ける.ただあまり大きなデータのコピーは嫌だよねということで,戻り値が std::string や構造体の関数呼び出しを「一旦変数に入れる」ときは const 参照を好んで使っていた. A(B(C(a), b, D(E(c), d, e))); 「む,なんて読みにくいコード.ばらせよ」 const int target_id = C(a); const MessageBody& message_body = D(E(c), d, e); const Message& msg = B(target_id, b, message_bod

    C++ と const 参照 - NyaRuRuが地球にいたころ
    yowano
    yowano 2013/05/29
    関数内でconst 参照があったとき,考えるべきことは色々ある.確かにその参照は,初期化時と同じオブジェクトを指し続けてはいるだろうが,その中身まで同じとは限らない。
  • const の取り扱い - Cube Lilac

    constメンバ関数は重要 - Faith and Brave - C++で遊ぼう より. const と言うキーワードは C++ の中でも重要な位置を占めています.そのせいもあってか,「コメントで IN とか OUT とか書く位なら const 使えバカ」「Effective C++ に載ってるんだから const 使え」と言ったような手厳しい意見も聞かれます.一方で,その使用範囲の広さからか「const って良く分らないし・・・」「要は,(プログラマが)気を付けてれば良いんでしょ?」「こまけぇこたぁいいんだよ!!」と言った声も聞かれます. 今回は,そんな const について少し記述してみます. おさらい #include <iostream> #include <string> /* --------------------------------------------------

    const の取り扱い - Cube Lilac
    yowano
    yowano 2013/05/25
    const 付の引数で渡されたインスタンスは,const 付のメソッドしか呼ぶことができない。そのため、const 付メソッドを適切に提供しないと、集団で開発するときには他人にも影響が及ぶ。
  • 20章 constメンバ変数の初期化 - (void*)Pないと

    http://www.geocities.jp/ky_webid/cpp/language/020.html C++のconstには状況よって様々な効果があるので少しややこしいです。 とりあえずひとつずつ理解していきたいと思います。 まずはC言語的なconstについてですが、これは単にその変数、もしくはその変数が参照している値を変更不可にすることができます。 const int i = 100; // iの値を変更できない int* const p; // pの値を変更できない const int* p; // pが指している値を変更できない const int* const p; // pの値を変更できなくて且つ指してる値も変更できない C++ではこれ以外にconstの役割がかなり増えました。 ひとつずついきましょう。 まずはメンバイニシャライザについてです。 メンバ変数にconstを適

    20章 constメンバ変数の初期化 - (void*)Pないと
  • const修飾子について

    ここでは、私、酒井理雄( TSUGU)がconst修飾子について解説したいと思います。 ご意見やご感想、また、ここおかしいんじゃない?というような所が あれば連絡していただけると作者が喜びます。 constの基 ポインタ変数に対するconst宣言 メンバ変数に対するconst宣言 (作成凍結) メンバ関数に対するconst宣言 TOP C言語においてconst修飾子では指定した変数が定数である(中身を変更 できない)ことを指定します。これによってプログラマの不注意による バグの混入を防ぐことが出来ます。 const修飾子を用いたもっとも簡単な例を次に示します。 const int i = 0; i = 1; //const指定した変数(定数)に値を代入しようとしたため、コンパイルエラー この例のように定数にしたい(値を変更したくない)変数の型名の前に const修飾子を付

    yowano
    yowano 2013/04/23
    ポインタ変数を宣言する時、型名の前にconstを書くとそのポインタ変数の参照先が変更できなくなる。 ポインタ変数自体(格納されているアドレス自体)を定数にしたいときは、*の後にconst修飾子を付ける
  • 1