1

こんにちは、私はプログラミングが初めてで、2学期に入っています。私の質問は課題ではないので、しばらくお待ちください。いくつかのことがどのように機能するかを見ようとしています。

Class メソッドから 2D 配列を返す方法を示すために作成したプログラムがあります。私はテキストブックを読んでいましたが、プログラマーが不注意にプライベート変数を変更しないように、「get」メソッドがそれらを const にすることが書かれています。

[10][10] 2 次元文字配列のメソッドについて思いついたのは次のとおりです。

//private member is:
private:
      char array[10][10];

//method prototype
public:
      const char(* getArray()const )[10];

//and then the actual method itself
const char(* getArray()const )[10]
{
      return array;
}

これは機能しますが、これが適切なコードであるかどうか疑問に思っています(オンラインや本で見つけたgetメソッドでのconstの使用例はすべて、char *の前にconstを配置することを余儀なくされたという事実によるものではないと思いますconst は行末にしかありません)、なぜそれが機能するのですか?char (* getArray1())[10] const; をやってみました。しかし、それは機能せず、コンパイラは const の前に { が必要であると不平を言いますが、それは私がやろうとしていることではありません。

また、これが 1D 配列である場合、単純に次のようになることもわかっています。

char* getArray() const;

私はそれをテストして動作するからです。2D 配列の代わりに 1D 配列を使用する方法を説明した別の Web ページを見たので、既に認識していますが、基本的には 100 の新しい配列 (array[100]、基本的には array[10] です) が作成されます。 * 10])

ここで他の例を見てきましたが、これが「腐った配列」と呼ばれるものを返す可能性があるという事実も認識しています。

しかし、これが正しければ、私に知らせてください。そうでない場合は、あなたの考えを教えてください。

ありがとう

4

1 に答える 1

0

試してみてくださいtypedef char const (*array_t)[10]; array_t getArray() const

于 2013-05-28T03:30:38.870 に答える