내 게임 클래스의 생성자는 다음과 같습니다.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가 복사 중입니까?
플레이어에 포인터를 저장하려면 다음과 같이 private 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가 더 이상 사용 가능하지 않아야한다는 것은 무작위로 행한 것입니다. 나는 당신이 그것을 사용해서는 안되며 사용해서는 안된다는 말은 아닙니다 - 당신이 지나가고있는 것의 범위에주의하십시오. –