将成员变量声明为引用有什么好处? 我看到人们这样做,并不明白为什么。
答案 0 :(得分:4)
一个有用的情况是,当您无权访问该对象的构造函数时,却不希望通过指针进行间接处理。例如,如果类A
没有公共构造函数,并且您的类想要在其构造函数中接受A
实例,则您希望存储A&
。这也保证了引用的初始化。
答案 1 :(得分:1)
当您需要访问另一个对象而不复制它时,成员引用很有用。
与指针不同,引用不能(意外地)更改,因此它始终引用同一个对象。
答案 2 :(得分:1)
一般来说,具有不寻常的赋值语义的类型(如std::auto_ptr<>
和C ++引用)可以更容易地在脚下射击(或射击整条腿)。
当引用用作成员时,意味着编译器生成operator=
通过分配引用的对象而不是重新分配引用来做一件非常令人惊讶的事情,因为引用无法重新分配以引用另一个对象。换句话说,在大多数情况下拥有引用成员会使该类不可分配。
通过使用普通指针可以避免这种令人惊讶的行为。