問題タブ [temporary-objects]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - セッション データに保存するか、一時データを SQL データベースに保存するか
PHP で $_SESSION 変数を使用して一時データ (そのセッションに関連する) をセッションに保存するか、SQL データベースに保存して取得するのがより効率的か疑問に思っています。
お時間をいただきありがとうございます。
c++ - 式内の一時オブジェクトのC++破棄
次のコードが与えられます:
次の出力が得られます。
これが正しいことはわかっていますが、理由はわかりません。stdc ++の知識を持っていて、私に説明してくれる人はいますか?
c++ - C ++で定数を別のメソッドの参照引数に変換できるのはなぜですか?
メソッドに変換する一時オブジェクト参照を作成することは禁止されているため、この構文は役に立たないはずですが、さらに混乱を招く可能性があります。では、なぜC ++はこの種の構文をサポートする必要があるのでしょうか?
編集:正直なところ、私はあなたの表現を理解していませんでした。上記の例を考えると、通常はvoid outputString(const string ss)
代わりに使用します。通常は、定数/変数を処理する「値渡し」メソッドと「参照渡し」メソッドだと思います。void outputString(const string &ss)
メソッドは変数のみを処理します。定数const type-id &
の代わりに使用する必要がある唯一の理由const type-id
は効率です。「参照渡し」メソッドはプリミティブ定数/オブジェクト変数のポインター(アドレス)のみを取得しますが、「値渡し」メソッドはコピー。
ありがとう。
c++ - 一時オブジェクトのメソッドを呼び出すと、古い C ライブラリでコンパイラ エラーが発生する
glibc-2.5-25 (suse 10.2) を搭載したコンピューターから glibc-2.3.2-6 (suse 8.2) を搭載したコンピューターに移植するときに、コードに奇妙な問題があります。一時オブジェクトでいくつかのメソッド呼び出しを使用していますが、それらは古いマシンでは機能しません。
古いバージョンの libc が原因でこれが実際に発生するのでしょうか、それとも私の IDE の設定 (コンパイラ設定) である可能性がありますか?
c++ - T()= T()が許可されるのはなぜですか?
この式T()
は(標準による)右辺値を作成すると思います。ただし、次のコードはコンパイルされます(少なくともgcc4.0では)。
メンバー関数は一時的に呼び出すことができ、上記は最初のから作成された一時的な右辺値に対してoperator =を呼び出すだけなので、技術的にはこれが可能であることを私は知っていT()
ます。
しかし、概念的には、これは右辺値に新しい値を割り当てるようなものです。これが許可される正当な理由はありますか?
編集:私がこれを奇妙だと思う理由は、組み込み型では厳密に禁止されていますが、ユーザー定義型では許可されているためです。たとえば、int(2) = int(3)
これは「割り当ての無効な左辺値」であるため、コンパイルされません。
ですから、本当の問題は、このやや一貫性のない動作が理由で言語に組み込まれたのではないかということだと思います。それとも歴史的な理由でそこにありますか?(たとえば、右辺値式でconstメンバー関数のみを呼び出すことができるようにする方が概念的には適切ですが、既存のコードが破損する可能性があるため、これを行うことはできません。)
sqlite - sqlite:読み取り専用データベースの一時テーブル/ビュー?
sqlite では、読み取り専用データベースに一時ビューを作成できないようです。何か不足していますか?TEMPORARY の場合、db 接続モードは問題ではないと考えました。
「PRAGMA temp_store = MEMORY」も指定しましたが、役に立ちませんでした。
ビューを使用するための合理的な代替手段はありますか?
c++ - メソッドと一時変数の連鎖について、明確にしてください
皆さん、こんにちは!
「円」へのポインターを受け取り (たとえば)、いくつかの「連鎖」メソッドを介してその属性を調整するクラスがあります。このようなもの:
今、このコードが合法かどうか疑問に思います:
一方で、「if」式の中で作成された一時的なオブジェクトは、この式の最後まで存続すると思います。したがって、「Radius」と「Center」の呼び出しは有効です。しかし一方で、一時変数への参照を使用することは未定義の動作であり、私はまさにこの種のことを行っているように思えます-「this」が一時的な場合、(*this) を使用しています。それは私にいくつかの疑問を抱かせるので、はっきりさせてください。ありがとう!
c++ - 構造体のSTLマップで、「[]」演算子によって構造体のdtorが2回余分に呼び出されるのはなぜですか?
作業中のより大きなコードベースで気付いた奇妙な動作を示す単純なテストケースを作成しました。このテストケースは以下のとおりです。私は、STLマップの「[]」演算子を使用して、そのような構造体のマップに構造体へのポインターを作成しています。以下のテストケースでは、次の行が...
...ポインタを取得します(そしてマップに新しいエントリを作成します)。私が気付いた奇妙なことは、この行によってマップに新しいエントリが作成されるだけでなく( "[]"演算子のため)、何らかの理由で構造体のデストラクタが2回余分に呼び出されることです。私は明らかに何かが欠けています-どんな助けでも大歓迎です!ありがとう!
上記のコードは次を出力します...
...しかし、TestStructのデストラクタの最初の2つの呼び出しの原因がわかりませんか?(testStructMapがスコープ外になるため、最後のデストラクタ呼び出しは理にかなっていると思います。)
c++ - 一時オブジェクトとしてインスタンス化を禁止する (C++)
C++ で歩哨クラスを使用するのが好きですが、次のようなバグを繰り返し書いてしまう精神的苦痛があるようです。
言うまでもなく、セントリーは意図したようにスコープの最後ではなく、作成直後に死ぬため、これは失敗します。上記のコードがコンパイルに失敗するか、少なくとも実行時にエラー メッセージで中止されるように、MySentryClass が一時的にインスタンス化されるのを防ぐ方法はありますか?
c++ - スタックベースの参照とは?
スタックベースの参照とは? オブジェクトのメンバーである参照とどう違うのですか? 規格はこれらについて話していますか?
Herb Sutter によって書かれた記事でこれに出くわしました。
Q1: 次のコードは合法的な C++ ですか?
A1: はい。これは C++ の機能です。コードは有効であり、表示どおりに動作します。
通常、一時オブジェクトは、それが現れる完全な式の終わりまでしか存続しません。ただし、C++ では、一時オブジェクトをスタック上の const への参照にバインドすると、一時オブジェクトの有効期間が参照自体の有効期間まで長くなるため、一般的なダングリング参照エラーを回避できるように意図的に指定されています。上記の例では、 f() によって返されたテンポラリは、右中括弧まで存続します。(これはスタックベースの参照にのみ適用されることに注意してください。オブジェクトのメンバーである参照には機能しません。 )