English 中文(简体)
带有临时对象和引用参数的规则
原标题:
  • 时间:2009-04-02 17:40:27
  •  标签:

假设我有一节课:

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

和一个函数: 和一个函数: (in simplified Chinese characters) 和一个函数: (in traditional Chinese characters) hé yí gè hán shù: (in pinyin)

void x(const A & s) {}

我也会。

x(A());

有人能解释一下关于通过引用传递临时对象的规则吗?在编译器允许的范围内,需要const的地方,是否会发生隐式拷贝等。从实验中得知好像需要const,这很有道理,但是这方面是否有正式的规则?

谢谢!

最佳回答

有一条正式的规定 - C++标准(如果您感兴趣,第13.3.3.1.4节)规定,临时量只能绑定到一个const引用 - 如果您尝试使用非const引用,编译器必须将其标记为错误。

问题回答

Herb Sutter在这里讲得很好: http://www.gotw.ca/gotw/081.htm

x() 必须采取一个对临时 A 的 const 引用,或者 x() 必须采取一个 by-value A。





相关问题
热门标签