这个问题已经在这里有了答案:
已关闭8年。
之间有什么区别(如果有):
Player player=*(new Player());
和:
Player &player=*(new Player());
两者(似乎)的行为方式相同,但我肯定会错过一些东西吗?
最佳答案
区别在于,第一个创建副本,而第二个创建对new Player()
返回的指针所指向的对象的引用。
Player player=*(new Player());
使用复制构造函数复制初始化
player
。Player &player=*(new Player());
只是为
*(new Player())
创建一个别名,该别名是有效的,因为new Player()
不是临时的。因此,Player& player = Player()
将是非法的。他们在都是一样的,他们都吮吸。
关于c++ - C++在重载的赋值运算符声明中做什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13351447/