2016-01-13 5 views
1

Я новичок в C++ и пытаюсь изучить концепцию указателя и ссылок. Я пытался создать ссылку и указатель на новый экземпляр класса с помощью оператора нижеНевозможно создать ссылку на новый экземпляр класса

Animal *rA = new Animal();//works fine 

Animal &rA = new Animal();//compiler prints error: non-const lvalue reference 
          //to type 'Animal' cannot bind to a temporary of type 'Animal *' 

Благодаря моему ограниченному знанию, я не в состоянии понять сообщение об ошибке распечатанного компилятора. Может кто-нибудь, пожалуйста, любезно объясните мне, что это значит?

ответ

3

new возвращает указатель. Ссылка должна быть инициализирована фактическим объектом, а не указателем на объект.

Animal &rA = * new Animal; 

..would работа, но пока вы не знаете, что вы делаете, вы вообще не должны использовать new.

Animal A; 
Animal &rA = A; 

... работает, не впадая в гадость, от вас следует избегать.

+0

Спасибо за подробное объяснение! действительно помог мне понять. – Thor

Смежные вопросы