gpt4 book ai didi

c++ - 复制构造函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:11:48 25 4
gpt4 key购买 nike

class Gun{
private:
int bullet;
public:
Gun(int bnum) : bullet(bnum) { }
};

class Police{
private:
Gun * pistol;
public:
Police(int bNum) : {
if(bNum>0)
pistol = new Gun(bNum);
else
pistol=NULL;
}
Police(const Police& ref){
pistol=new Gun(*(ref.pistol)); //Confused about this part.

}
};

我目前正在学习 C++,我对 Police 的复制构造函数中发生的事情有点迷茫。我相信 Gun 的构造函数只接受整数,但如何将 *(ref.pistol) 作为参数分配给它?我认为 *(ref.pistol) 是一个 Gun 对象,而不是一个整数。

最佳答案

如果你自己没有显式声明一个复制构造函数,编译器总是隐式声明一个复制构造函数(尽管在某些情况下它可以被删除)。您感到困惑的那一行调用了这个隐式声明的复制构造函数。

这个隐式声明的复制构造函数是公共(public)的,并且(如果使用它)它只是执行成员复制,,就好像您已经编写了

public:
Gun(const Gun& other): bullet(other.bullet) {}

关于c++ - 复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831310/

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