gpt4 book ai didi

C++ 传递对象的拷贝还是传递指向对象的指针?

转载 作者:太空狗 更新时间:2023-10-29 19:45:09 25 4
gpt4 key购买 nike

这是我的 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 是否被复制?

如果我想保存一个指向播放器的指针,我应该像下面这样创建一个私有(private) ivar 吗?

private:
Player* _player;

...
// In Game constructor
_player = player;

最佳答案

如果您通过引用或指针传递,则不会进行复制。如果你想保存一个指针,那么是的,你需要在某个地方保存它。

请注意,通常更好的做法是使用构造函数初始化列表而不是赋值。喜欢:

Game( const Board& b, Player * player ) : _player( player )
{
// do something with Board
}

到:

Game( const Board& b, Player * player )
{
_player = player;
// do something with Board
}

对于指针,没有太大的区别,但是对于更复杂的对象,使用初始化可以避免赋值时可能出现的语义和性能问题。

关于C++ 传递对象的拷贝还是传递指向对象的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/871993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com