2

クラスがあるとします:

class A
{
 public:
 A() {}
};

そして関数:

void x(const A & s) {}

そして私は:

x(A());

一時オブジェクトの参照による受け渡しに関するルールを誰かに説明してもらえますか? コンパイラが許可するもの、const が必要な場所、暗黙のコピーが発生した場合などに関して、いじってみると、意味のある const が必要なように見えますが、これらすべてに関する正式なルールはありますか?

ありがとう!

4

3 に答える 3

9

正式なルールがあります - C++ 標準 (興味がある場合はセクション 13.3.3.1.4) では、一時は const 参照にのみバインドできると述べられています - 非 const 参照を使用しようとすると、コンパイラはこれにフラグを立てる必要があります。エラー。

于 2009-04-02T17:46:15.357 に答える
8

Herb Sutter がここで説明しています: http://www.gotw.ca/gotw/081.htm

于 2009-04-02T17:45:08.543 に答える
1

x() は、一時的な A への const 参照を取るか、または x() は A を値で受け取る必要があります。

于 2009-04-02T17:45:49.197 に答える