Вот конструктор для моего класса Game:C++ Передача копии объекта или передача указателя на объект?
// Construct a Game to be played with player on a copy of the board b.
Game(const Board& b, Player* player)
{
...
}
Вот как я с помощью конструктора:
Player p("Player Name");
Board b(6,3);
Game g(b, &p);
Как это работает? Скопировано ли b?
Если я хочу сохранить указатель на игрока, должен ли я создать частный ivar, как показано ниже?
private:
Player* _player;
...
// In Game constructor
_player = player;
В качестве примечания: не префикса переменных с «_» в C++, так как префикс «_» зарезервирован для поставщика компилятора в C & C++. –
Какое имя я должен использовать? – Elliot
Я хочу прокомментировать, что это может быть опасно (поэтому вектор на самом деле делает копию объекта и принимает ссылку при вызове push_back) - пример https://gist.github.com/nadams810/6756139. Этот код отлично работает на VC++/gcc ...но это просто случайная удача, поскольку деструктор был вызван для CC, поэтому x больше не должен использоваться. Я не говорю, что вам следует или не следует использовать его - просто помните о масштабах того, что вы проходите. –