【发布时间】:2010-10-26 16:46:12
【问题描述】:
这是我的 Game 类的构造函数:
// 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++ 中的编译器供应商保留的。跨度>
-
那我应该用什么名字呢?
-
我确实想评论一下这可能很危险(这就是为什么 vector 实际上会复制对象而不是在调用 push_back 时获取引用)-例如gist.github.com/nadams810/6756139。该代码在 VC++/gcc 上工作得很好……但这只是偶然的运气,因为 CC 调用了析构函数,所以 x 应该不再可用。我并不是说你应该或不应该使用它——只是要注意你所传递的范围。
标签: c++ pointers class constructor