【发布时间】:2011-11-13 01:32:02
【问题描述】:
我在 Mark Allen Weiss 的数据结构一书中看到了以下代码。
template <class Object>
class Cref
{
public:
Cref ( ) : obj ( NULL ) { }
explicit Cref( const Object & x ) : obj ( &x ) {
const Object & get( ) const
{
if ( isNull( ) )
throw NullPointerException( ) ;
else
return *obj;
}
bool isNull( ) const
( return obj == NULL; }
private:
const Object *obj;
};
所以这里的重点是分配 null/初始化一个常量引用。但我不确定我是否理解以下内容: 1. 我们用另一个常量引用 x 初始化一个常量引用。但是为什么它再次作为 obj(&x) 完成? const Object & x 中的 & 与 obj(&x) 中的 &x 不同?我看到了这一点,但不是很清楚为什么会这样。请解释一下。 2. get 方法() - 我们尝试返回这个类的私有成员 obj 的 const 引用。它已经是一个常量引用。为什么返回 *obj 而不仅仅是 obj ? 3. 为什么要显式关键字?如果发生隐式类型转换会发生什么?有人可以为此提供一个场景吗?
谢谢
【问题讨论】:
标签: c++ pointers constructor constants