4

readonlyC#での に相当する C++ については、多くの質問がありますconst。しかし、これまでのところ、私が知る限り、実際に正しいものや、私が求めている詳細について言及しているものは何も見つかりませんでした.

ctor ( spec ) 内で読み取り専用フィールドを (複数回でも) 設定できます。これにより、最終的に値を決定する前に、さまざまな操作を実行できます。一方、C++ の Const は、ctor が実行される前に最終的な値が利用可能である必要があるという点で (C++ と C# の両方で) 微妙に異なる動作をします。

readonlyC++の動作を実現する方法はありますか?

4

2 に答える 2

6

はい、使用しますconst- コンパイル時に値を知る必要はありません:

struct X
{
    const int a;
    X(int y) : a(y) {}
};

//...
int z;
cin >> z;
X x(z);   //z not known at compile time
          //x.a is z

もう 1 つの方法は、設定を 1 回だけ許可するユーザー定義の構造を使用することですが、これはやり過ぎです (とにかく、コンパイル時にこれを強制することはできませんでした)。

于 2012-11-13T14:14:51.927 に答える
3

あまり。

できることは、フィールドを保護することです。これにより、ゲッターが (少なくとも外部から) アクセスする必要があり、自分自身を 1 回だけ呼び出すことを許可するセッターを作成することができます。

それ以外の場合constは、最善の策です。

于 2012-11-13T14:16:40.020 に答える