Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要编写一个类,它的构造函数接受一个对象的常量引用并将其存储在本地。
为了避免我能预见的最常见的错误,我只想接受对非临时性的引用(即:对左值的引用)。
如何编写一个仅对非临时对象进行常量引用的函数?
当然,即使是非临时的也可能超出范围,从而破坏我的课堂行为,但我相信通过禁止临时引用,我将避免大多数错误。
如果您要存储引用并需要在构造函数完成后使用它,那么构造函数最好使用指针:
struct C { C(const X* p) : p_(p) { } const X* p_; };
这样,几乎可以保证您不会有指向临时对象的指针(除非X做一些非常愚蠢的事情,比如重载一元&以返回this)。
X
&
this
如果构造函数采用指针,类的用户也更清楚他们需要注意X传递给构造函数的对象的生命周期。