1

したがって、このコードは意味がないことがわかっています。

const int foo() 
{
  int n = // do computation...;
  return n;
}

とにかくコピーされたときに「const int」を返すのはどういう意味ですか?

しかし、Qt コンテナーのような暗黙的共有 (COW) を備えたクラスでは、やはり意味があるのでしょうか? 検討:

const QList<mytype> get_list()
{
   QList<mytype> lst;
   // do stuff to fill list;
   return lst;
}

今私はできる:

   const QList<mytype> mylst = get_list();

Qt にはコンテナーの暗黙的な共有があるため、return lst実際にはリストの内容をコピーせず、refcount を増やすだけで、constそれを変更できないことを確認するため、問題なく動作するはずです (get_list何らかの理由で確実にしたい場合、または必要な場合)。constメソッド自体である) 。ここで私の考えは正しいですか?

4

1 に答える 1

1

と const を変更できないことを確認してください...私の考えはここで正しいですか?

質問全体が理解できませんでした。しかし、上記の部分は正しくありません。const関数から値を返すだけであり、受信側const. したがってconst、からの削除mylstが許可され、再び変更可能になります。

/* const */ QList<mytype> mylst = get_list();  // ok! 'mylst' is modifiable
于 2011-10-24T07:18:01.570 に答える